繁体   English   中英

子域的URL重写因Identityserver3而失败

[英]URL Rewrite for subdomain fails with identityserver3

我们在Azure上托管了一个通配符域。 我已经设置了subdomain.domain.com以重写为domain.com/subdomain。 一切正常。

但是,当我登录到身份服务器时,一旦登录过程完成并且将我重定向回subdomain.domain.com,似乎认证令牌就丢失了。

我看不到这怎么可能。 我们所有的身份提供商(Google,Facebook,Microsoft live)都会发生此问题

如果我将设置更改为使用domain.com/subdomain,那么一切都会按预期进行

主要问题是您的身份服务器放置哪种类型的cookie,它看起来像服务器位置和特定于域的cookie,而不是通配符。

Cookie域

用于身份验证的cookie的常见问题是cookie的域。 与cookie的路径类似,如果cookie是在两个不同的子域上创建的,则cookie仅可在创建它的域上访问。 例如,您的主应用程序可能在www.domain.com上,但是您在CS.domain.com上运行了Telligent Evolution。 如果您在www.domain.com上创建cookie,则浏览器只会将其发送到该域,并且当它们导航到cs.domain.com时不会传递。

可以通过将域设置为“ .domain.com”来保留cookie。 Cookies不使用通用的“ *”通配符。 只需使用“ .domain.com”。 使用此条目,浏览器也不会在将cookie移到cs.domain.com时传递它。

与路径一样,可以在web.config或通过代码中指定域。 设置web.config文件时,它将仅检查授权cookie。 您必须为此设置站点才能正确识别新的域级别Cookie:


<authentication mode="Forms">
  <forms name=".CommunityServer" ... domain=".domain.com" />
</authentication>

FormsAuthentication.SetAuthCookie方法将忽略“域名”名称,因此在创建AuthCookie时必须在登录页面上手动设置它。 例如:

HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true);
cookie.Domain = ".domain.com";
Response.Cookies.Add(cookie); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM