Show/Hide Toolbars

Руководство по техническому обслуживанию

Конфигурирование аутентификации по токенам

Ссылки Назад Вверх Вперед

Начиная с версии 2.184 система "Первая Форма" (в том числе интерфейс "Личный Кабинет") использует только аутентификацию по токенам. Ниже описаны настройки, которые должны быть в файле web.config:

1.enableSessionState="false"

2.По умолчанию

<sessionState mode="Off" />

(все остальные атрибуты у sessionState можно удалить)

Но если в приложении развернут модуль опросов, то

<sessionState mode="InProc" />

3.Если в web.config прописан анонимный доступ для роутов, начинающихся с app/v1.0/api/Admin_Manual/comments, этот анонимный доступ необходимо убрать. Можно остановить Windows-сервис aspnet_state.

Также начиная с версии 2.184 токен должен передаваться в заголовке 1FormaAuth, а не Authentication, как было ранее.

Настройки для "Первой Формы" с аутентификацией Forms

1.Полностью закомментировать тег authentication.

2.В секцию appSettings добавить следующие значения:

<add key="AuthByToken" value="true" />
<add key="AuthTokenExpiresInMinutes" value="1500" />
<add key="AuthTokenLoginUrl" value="~/Login.aspx"/>

 

3.В секцию system.webServer / modules добавить:

<remove name="JwtAuthModule" />
<add name="JwtAuthModule" type="TaskCenter.Authorization.JwtAuthModule" preCondition="integratedMode" />
<remove name="FormsAuthenticationModule" />
<remove name="FormsAuthentication" />

 

4.В конце списка тегов location добавить:

<location path="js">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="component/GeoLocation.js">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="app/v1.0/api/DataSync/Import">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="Login.aspx">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="CustomerZone/Copied">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>

   

Добавить если нет:

<location path="app/v1.0/api/auth/token">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="app/v1.1/api/confirmKillPush">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="app/v1.2/api/info">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>

<location path="app/v1.2/api/publications">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>

<location path="img">
  <system.web>
      <authorization>
          <allow users="?" />

       </authorization>
  </system.web>
  <system.webServer>
      <staticContent>
          <clientCache cacheControlMode="UseExpires" cacheControlMaxAge="1.00:00:00" httpExpires="Wed, 31 Dec 2030 00:00:00 GMT" />

       </staticContent>
      <httpProtocol>
          <customHeaders>
              <add name="Cache-Control" value="public,max-age=31536000" />

           </customHeaders>
      </httpProtocol>
  </system.webServer>
</location>
<location path="Login.js">
  <system.web>
      <authorization>
          <allow users="?" />

       </authorization>
  </system.web>
</location>

 

5.Удалить если было:

<location path="app/v1.0/api">
   <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
   </system.web>
</location>
<location path="app/v1.1/api">
   <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
   </system.web>
</location>
<location path="app/v1.2/api">
   <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
   </system.web>
</location>

Настройки для "Первой Формы" с аутентификацией Windows

1.Тег authentication остается:

<authentication mode="Windows"/>

 

2.В секцию appSettings добавить следующие значения:        

<add key="AuthByToken" value="true" />    
<add key="AuthTokenExpiresInMinutes" value="1500" />  

 

3.В конце списка тегов location добавить:

<location path="js">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="component/GeoLocation.js">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="app/v1.0/api/DataSync/Import">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="Login.aspx">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="CustomerZone/Copied">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>

   

4. Добавить если не было:

<location path="app/v1.0/api/auth/token">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="app/v1.1/api/confirmKillPush">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>
<location path="app/v1.2/api/info">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>

<location path="app/v1.2/api/publications">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>

<location path="img">
  <system.web>
      <authorization>
          <allow users="?" />

       </authorization>
  </system.web>
  <system.webServer>
      <staticContent>
          <clientCache cacheControlMode="UseExpires" cacheControlMaxAge="1.00:00:00" httpExpires="Wed, 31 Dec 2030 00:00:00 GMT" />

       </staticContent>
      <httpProtocol>
          <customHeaders>
              <add name="Cache-Control" value="public,max-age=31536000" />

           </customHeaders>
      </httpProtocol>
  </system.webServer>
</location>
<location path="Login.js">
  <system.web>
      <authorization>
          <allow users="?" />

       </authorization>
  </system.web>
</location>

 

5. Удалить если было:

<location path="app/v1.0/api">
   <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
   </system.web>
</location>
<location path="app/v1.1/api">
   <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
   </system.web>
</location>
<location path="app/v1.2/api">
   <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
   </system.web>
</location>

 

Настройка редиректа с Windows на forms приложение

Редирект с Windows на forms приложение необходимо настраивать, если нужна работа по протоколу http/2 и есть балансировка нагрузки через nginx.

При настроенном редиректе для работы в Windows-приложении пользователи должны проходить аутентификацию и получать токены в forms-приложении.

Порядок настройки редиректа:

1.Настроить два приложения (с Windows и forms аутентификацией) в одном домене.

2.В файле web.config приложения с forms-аутентификацией в секцию appSettings добавить:

<add key="WinToFormsRedirectWinUrl" value="https://win.myDomain.ru" />

где вместо win.myDomain.ru указан базовый адрес приложения с Windows-аутентификацией.

3.В файле web.config приложения с Windows-аутентификацией в секцию appSettings добавить:

<add key="WinToFormsRedirectFormsUrl" value="https://forms.myDomain.ru" />

где вместо forms.myDomain.ru указан базовый адрес приложения с forms-аутентификацией.

4.Пользователи должны заходить в приложение с forms-аутентификацией.

Проверка корректности настройки редиректа

1.Зайти на адрес https://forms.myDomain.ru/default.aspx (вместо default.aspx может быть любой адрес).

2.Если пользователь не авторизован, он перенаправляется на адрес https://win.myDomain.ru/default.aspx (response: Status: 302 Found; Location: https://win.myDomain.ru/default.aspx).

3.У пользователя запрашивается Windows-аутентификация (в зависимости от настроек браузера и политик домена аутентификация может выполняться автоматически).

4.Запрос проходит Windows-аутентификацию IIS и код "Первой Формы" выдает браузеру файл cookie 1FormaAuth, в котором содержится токен "Первой Формы". Одновременно пользователь перенаправляется на адрес https://forms.myDomain.ru/default.aspx (response: Status: 302 Found; Location: https://forms.myDomain.ru/default.aspx).

5.Запрос от браузера пользователя вместе с файлом cookie перенаправляется на адрес https://forms.myDomain.ru/default.aspx.

В результате пользователь работает в forms-приложении, но аутентификация происходит через Windows-приложение.

Если пользователь неактивен в "Первой Форме" в течение какого-то времени, файл cookie становится невалидным, и forms-приложение перенаправляет пользователя обратно на Windows-приложение, чтобы выдать новый файл cookie.

Настройки для Личного Кабинета

1.Полностью закомментировать тег authentication.

2.В секцию appSettings добавить следующие значения:

<add key="AuthByToken" value="true" />
<add key="AuthTokenExpiresInMinutes" value="1500" />
<add key="AuthTokenLoginUrl" value="~/Login"/>

 

3.В секцию system.webServer / modules добавить:

<remove name="JwtAuthModule" />
<add name="JwtAuthModule" type="CustomerZoneSPA.Authorization.JwtAuthModule" preCondition="integratedMode" />
<remove name="FormsAuthenticationModule" />
<remove name="FormsAuthentication" />

 

4.В конце списка тегов location добавить:

<location path="Login">
  <system.web>
      <authorization>
          <allow users="?" />
      </authorization>
  </system.web>
</location>

Настройки для модуля опросов

1.Полностью закомментировать тег authentication.

2.В секцию appSettings добавить следующие значения:

<add key="AuthByToken" value="true" />
<add key="AuthTokenExpiresInMinutes" value="1500" />
<add key="AuthTokenLoginUrl" value="~/default.aspx"/>

 

3.Перед закрытием секции system.webServer добавить:

<modules>
  <remove name="JwtAuthModule" />
  <add name="JwtAuthModule" type="Votations.NSurvey.WebAdmin.Authorization.JwtAuthModule" preCondition="integratedMode" />
  <remove name="FormsAuthenticationModule" />
  <remove name="FormsAuthentication" />
</modules>

 

4.Если опросы развернуты отдельно, данный пункт не выполняется.
Если опросы развернуты в виртуальной директории в "Первой Форме", то дополнительно к настройкам аутентификации "Первой Формы" необходимо выполнить следующие действия:

в элемент system.web добавить

<sessionState mode="InProc" />

для элемента system.web/pages указать атрибут enableSessionState="true"

<pages validateRequest="false" controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID" enableSessionState="true">