【发布时间】:2016-01-02 21:55:34
【问题描述】:
我有以下客户特别要求的严格场景:使用 Asp.NET MVC4 的单个网站,可通过具有单点登录机制的多个域访问。
通过在 webconfig 中指定二级域,我设法使表单身份验证与子域一起工作
<authentication mode="Forms">
<forms name="SingleSignOn" loginUrl="/Login/LoginRedirect" timeout="10" slidingExpiration="false" domain="domain.ml" cookieless="UseCookies" enableCrossAppRedirects="true">
<credentials passwordFormat="SHA1" />
</forms>
</authentication>
另外,在登录逻辑中调用FormsAuthentication.SetAuthCookie 时,我也指定了二级域:
System.Web.HttpCookie MyCookie = System.Web.Security.FormsAuthentication.GetAuthCookie(lName, false);
MyCookie.Domain = lSecondLevelDomain;
FormsAuthentication.SetAuthCookie(lName, false);
跨不同的域,这不起作用,因为实际域将与 web.config 中指定的域不匹配,也不与 cookie 匹配。
目标是:
用户访问 domain1.com 用户重定向到 logindomain.com 并创建了经过身份验证的 cookie 用户重定向回 domain1.com
用户始终被重定向到“登录域”,cookie 是使用该域创建的,并且始终使用跨域的相同 cookie 进行身份验证。
是否可以覆盖 Authorize 属性的逻辑,以允许使用登录域的 cookie 而不是用户最初使用的域进行授权?
【问题讨论】:
标签: asp.net-mvc authentication cross-domain