單點登錄 - Sharepoint 到 Web 應用程序
我們有一個使用基於 Windows 的身份驗證的 Sharepoint 站點。
我們在 Sharepoint 中提供指向使用基於表單的身份驗證的安全 Web 應用程序的連結。兩者都針對同一個 AD 進行身份驗證。
但是,問題是當點擊 Sharepoint 中的連結時,會提示他們在到達 Web 應用程序時重新進行身份驗證。這是一個麻煩,因為他們的使用者名/密碼顯然是相同的,因為對同一來源進行身份驗證。
有沒有關於從基於 Windows 的身份驗證到基於表單的身份驗證的單點登錄工作的範例或有用的文件?
如果您在同一域的子域之間導航(例如 www.YOURDOMAIN.com 到 app.YOURDOMAIN.com),您可以使用域級別的 asp.net 身份驗證 cookie 和一些 web.config 更改來獲得所需的結果
SetAuthCookie
。當我在 ASP.NET 和其他平台中設置類似的配置單點登錄時,這篇文章很有幫助 - CodeProject
第 1 步 - 設置 Cookie
即使 SharePoint 應用程序使用 Windows 身份驗證,您仍然可以呼叫此方法為您目前的域創建一個 .NET 身份驗證 cookie,並在使用者導航到您的表單身份驗證應用程序時自動對其進行身份驗證。因此,一旦您的使用者登錄到您的 SharePoint 網站,就會應用 cookie(可能通過自定義 Web 元件或頁面/母版頁程式碼隱藏),如下所示:
// 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>
(inside<system.web>
) 設置相同的值。如:<machineKey validation="SHA1" validationKey="[128 character random string]" decryption="AES" decryptionKey="[64 character random string]" />
第 3 步 - 設定
<forms>
值您還需要在
<forms>
標籤中設置值,以便在創建 auth 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>