asp.net单点登录不工作
代码发布后,我们两个站点之间的单点登录停止工作。两个站点都运行在同一域的不同子域上。子域x被用作所有其他应用程序的登录服务器。我不明白为什么会这样。在web.config中,两个站点的计算机密钥和解密密钥相同。验证设置为SHA1,解密设置为AES。身份验证配置如下所示: X:asp.net单点登录不工作,asp.net,iis-7,forms-authentication,single-sign-on,Asp.net,Iis 7,Forms Authentication,Single Sign On,代码发布后,我们两个站点之间的单点登录停止工作。两个站点都运行在同一域的不同子域上。子域x被用作所有其他应用程序的登录服务器。我不明白为什么会这样。在web.config中,两个站点的计算机密钥和解密密钥相同。验证设置为SHA1,解密设置为AES。身份验证配置如下所示: X: Y: 直到今天早上,SSO一直工作正常。我不确定代码发布后到底发生了什么变化,我在解决这个问题时遇到了一些问题。这两个应用程序当前运行在不同的应用程序池上(一个是x是.net 4.0,而y是.net 2.0),当我
Y:
直到今天早上,SSO一直工作正常。我不确定代码发布后到底发生了什么变化,我在解决这个问题时遇到了一些问题。这两个应用程序当前运行在不同的应用程序池上(一个是x是.net 4.0,而y是.net 2.0),当我将它们切换到使用相同的应用程序池时,SSO工作了。但是,这不是一个选项,因为另一个站点中使用的库之一仅在.NET 2.0上运行。我还尝试在IIS7管理器的顶层和网站层强制使用机器和解密密钥以及验证和解密算法,但没有成功
在转到x.domain.com后尝试转到y.domain.com时,浏览器将重定向回登录页面,事件日志中出现以下异常:
表单的窗体身份验证失败
要求原因:提供的车票
这是无效的
有什么想法吗?您是否怀疑配置也发生了变化?因为您在表单部分中确实需要:
enableCrossAppRedirects="true"
编辑:还要确保它们使用相同的加密密钥:
<system.web>
<machineKey validationKey="BLAHBLAHBLAHBLAH" decryptionKey="BLAHBLAHBLAH" validation="SHA1" decryption="AES"/>
</system.web>
听起来重定向工作正常,在尝试读取票证时抛出了一个错误。我在
web.config
内部配置标记中将以下内容添加到4.0网站时得到了此工作:
<appSettings>
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
</appSettings>
通过在Windows和/或.NET上安装补丁/修补程序解决了这一问题。具体而言:
- KB2518870
- KB2656351
- KB2572078
- KB2633870
<system.web>
<machineKey validationKey="BLAHBLAHBLAHBLAH" decryptionKey="BLAHBLAHBLAH" validation="SHA1" decryption="AES"/>
</system.web>
<appSettings>
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
</appSettings>