我们在azure上托管了一个外卡域。我已经设置了subdomain.domain.com来重写到domain.com/subdomain。一切正常。
但是当我登录我们的身份服务器时,一旦登录过程完成并且我被重定向回subdomain.domain.com,似乎认证令牌丢失了。
我看不出这是怎么可能的。我们所有的身份提供商(谷歌,Facebook,微软直播)都会出现此问题
如果我更改设置以使用domain.com/subdomain,那么一切都按预期工作
答案 0 :(得分:0)
主要问题是您的身份服务器放置的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”即可。使用此条目,浏览器在转到cs.domain.com时也不会传递cookie。
与路径一样,可以在web.config中或通过代码指定域。设置web.config文件时,它只会检查授权cookie。您必须为网站设置此集才能正确识别新的域级Cookie:
<authentication mode="Forms">
<forms name=".CommunityServer" ... domain=".domain.com" />
</authentication>
FormsAuthentication.SetAuthCookie方法会忽略“domain”名称,因此您必须在创建AuthCookie时在登录页面上手动设置它。例如:
HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true);
cookie.Domain = ".domain.com";
Response.Cookies.Add(cookie);