我们有一个使用基于Windows的身份validation的Sharepoint网站。
我们将Sharepoint中的链接提供给使用基于表单的身份validation的安全Web应用程序。 两者都是针对同一个AD进行authentication的。
但是,问题是点击Sharepoint中的链接时,系统会在到达Web应用程序时提示重新进行身份validation。 这是一个麻烦,因为他们的用户名/密码显然是相同的源相同的authentication。
有没有任何例子或有用的文件,让单一login工作从基于Windows的身份validation到基于表单的身份validation?
如果您在同一个域上的子域之间进行导航(如www.YOURDOMAIN.com到app.YOURDOMAIN.com),则可以使用SetAuthCookie和一些web.config更改来获得所需结果。
在ASP.NET和其他平台上设置类似的configurationSingle Sign-on时,本文很有帮助- CodeProject
即使SharePoint应用程序使用Windows身份validation,仍然可以调用此方法为当前域创build.NET身份validationCookie,并在用户导航到窗体身份validation应用程序时自动对用户进行身份validation。 因此,一旦您的用户login到您的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);
<machineKey>值 在这两个应用程序的web.config中,您需要为<machineKey> (位于<system.web> )设置相同的值。 如:
<machineKey validation="SHA1" validationKey="[128 character random string]" decryption="AES" decryptionKey="[64 character random string]" />
<forms>值 您还需要在<forms>标签中设置值,以便在创buildauth cookie时,它将使用您的domain设置,无cookieless
在你的SharePoint web.config中应用以下内容
<authentication mode="Windows"> <forms domain="YOURDOMAIN.COM" cookieless="UseCookies" enableCrossAppRedirects="true" /> </authentication>
在你的forms-auth应用程序中设置这些在你的web.config以及任何你已经(可能至less你的loginUrl和timeout属性值也设置)
<authentication mode="Forms"> <forms domain="YOURDOMAIN.COM" cookieless="UseCookies" enableCrossAppRedirects="true" /> </authentication>