簡體   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