解决方法
我已经在同一父域(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" />
当您设置cookie的域属性时,客户端浏览器会自动将此cookie发送到此域上托管的所有应用程序,并且能够自动对用户进行身份验证.
如果您想使用表单身份验证实现跨域SSO,您可以执行以下操作:
>用户导航到foo.com并登录.foo.com上托管的应用程序使用标准的表单身份验证,没什么特别的.
>用户决定转到bar.com并单击您创建的链接.此链接可能包含一个令牌参数,该参数将包含加密的用户名.这个encryption could be done使用机器键,看起来像这样:https://bar.com?token = ABC.
> bar.com上托管的应用程序接收请求,因为它使用same machine keys作为另一个应用程序,它能够获取decrypting the token并获取用户名.然后,它只需在本地发出身份验证cookie即可登录用户,并且用户将自动在bar.com中登录.