У нас есть сайт Sharepoint, который использует аутентификацию на основе Windows.
Мы предоставляем ссылки в Sharepoint на безопасное веб-приложение, использующее проверку подлинности на основе форм. Оба проходят аутентификацию по одному и тому же AD.
Однако проблема заключается в том, что при нажатии на ссылку в Sharepoint им предлагается повторно пройти аутентификацию при достижении веб-приложения. Это проблема, поскольку их имя пользователя / пароль, очевидно, одинаковы с момента аутентификации из того же источника.
Есть ли какие-либо примеры или полезные документы по обеспечению единого входа для работы от проверки подлинности на основе Windows до проверки подлинности на основе форм?
Если вы перемещаетесь между поддоменами в одном домене (например, от www.YOURDOMAIN.com до app.YOURDOMAIN.com), вы можете получить желаемые результаты с помощью cookie аутентификации asp.net на уровне домена с помощью SetAuthCookie
и некоторые изменения web.config.
Эта статья была полезна, когда я настраивал аналогичную конфигурацию Единый вход в ASP.NET и других платформах - CodeProject
Несмотря на то, что приложение 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);
<machineKey>
ценностиВ web.config обоих приложений вам необходимо установить одинаковые значения для вашего <machineKey>
(внутри <system.web>
). Такие как:
<machineKey
validation="SHA1"
validationKey="[128 character random string]"
decryption="AES"
decryptionKey="[64 character random string]" />
<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>