我已经在同一父域(app1.domain.com,app2.domain.com,...)上托管的多个ASP.NET MVC应用程序之间实现了一个SSO解决方案,方法是使用Forms Authentication并设置cookie 的domain属性.所有应用程序的web.config:
<forms
name="ssoauth"
loginUrl="/login"
protection="All"
timeout="120"
requireSSL="true"
slidingExpiration="false">
domain="domain.com"
/>
Run Code Online (Sandbox Code Playgroud)
当您设置cookie的域属性时,此cookie将自动由客户端浏览器发送到此域上托管的所有应用程序,并且能够自动对用户进行身份验证.
如果您想使用表单身份验证实现跨域SSO,您可以执行以下操作:
foo.com并登录.托管的应用程序foo.com使用标准的表单身份验证,没什么特别的.bar.com并单击您创建的链接.此链接可能包含一个令牌参数,该参数将包含加密的用户名.这种加密可以使用机器密钥完成,如下所示:https://bar.com?token=ABC.bar.com接收请求,因为它使用与其他应用程序相同的机器密钥,它能够解密令牌并获取用户名.然后,它只需在本地发出一个身份验证cookie,然后用户自动登录即可登录用户bar.com.| 归档时间: |
|
| 查看次数: |
5225 次 |
| 最近记录: |