Назад | Перейти на главную страницу

Единый вход - приложение Sharepoint to Web

У нас есть сайт Sharepoint, который использует аутентификацию на основе Windows.

Мы предоставляем ссылки в Sharepoint на безопасное веб-приложение, использующее проверку подлинности на основе форм. Оба проходят аутентификацию по одному и тому же AD.

Однако проблема заключается в том, что при нажатии на ссылку в Sharepoint им предлагается повторно пройти аутентификацию при достижении веб-приложения. Это проблема, поскольку их имя пользователя / пароль, очевидно, одинаковы с момента аутентификации из того же источника.

Есть ли какие-либо примеры или полезные документы по обеспечению единого входа для работы от проверки подлинности на основе Windows до проверки подлинности на основе форм?

Если вы перемещаетесь между поддоменами в одном домене (например, от www.YOURDOMAIN.com до app.YOURDOMAIN.com), вы можете получить желаемые результаты с помощью cookie аутентификации asp.net на уровне домена с помощью SetAuthCookie и некоторые изменения web.config.

Эта статья была полезна, когда я настраивал аналогичную конфигурацию Единый вход в ASP.NET и других платформах - CodeProject

Шаг 1 - Установите cookie

Несмотря на то, что приложение SharePoint использует проверку подлинности Windows, вы все равно можете вызвать этот метод для создания файла cookie проверки подлинности .NET для вашего текущего домена и автоматической проверки подлинности пользователя, когда он переходит к вашему приложению проверки подлинности форм. Итак, как только ваш пользователь войдет на ваш сайт SharePoint, примените файл cookie (возможно, через настраиваемую веб-часть или код программной части страницы / мастер-страницы) следующим образом:

// this will create a persistant cookie 
// (meaning closing/re-opening the browser won't remove the cookie)
FormsAuthentication.SetAuthCookie(
    SPContext.Current.Web.CurrentUser.LoginName, 
    true);

 

Шаг 2 - Установите идентичный <machineKey> ценности

В web.config обоих приложений вам необходимо установить одинаковые значения для вашего <machineKey> (внутри <system.web>). Такие как:

<machineKey 
  validation="SHA1" 
  validationKey="[128 character random string]" 
  decryption="AES" 
  decryptionKey="[64 character random string]" />

 

Шаг 3 - Установите <forms> ценности

Вы также захотите установить значения в <forms> тег, чтобы при создании файла cookie аутентификации он использовал ваши настройки для domain, cookieless

в вашем SharePoint web.config примените следующее

<authentication mode="Windows">
      <forms domain="YOURDOMAIN.COM" 
             cookieless="UseCookies"
             enableCrossAppRedirects="true" />
</authentication>

в вашем приложении forms-auth установите их в своем web.config вместе с тем, что у вас уже есть (возможно, по крайней мере, ваш loginUrl и timeout также устанавливаются значения свойств)

<authentication mode="Forms">
      <forms domain="YOURDOMAIN.COM" 
             cookieless="UseCookies"
             enableCrossAppRedirects="true" />
</authentication>