[英]SSO using Azure B2C with multiple custom policies with different domains
我現在已經有幾個星期了。 我需要使用 Azure AD B2C 自定義子域實現下一個場景:例如,具有ssositeA.mydomain.com
和自定義策略b2c_1a_signin_siteA
和ssositeB.mydomain.com
與自定義策略b2c_1a_signin_siteB
以及在 SSO 中登錄siteA
siteB
。
我已經測試過,這至少不是默認行為。 擁有一個中央 sso 工作:例如, sso.mydomain/<tenant id>/b2c_1a_signin_siteA
和sso.mydomain/<tenant id>/b2c_1a_signin_siteB
。 但是,這並不理想,因為我們希望在子域中有一個與品牌相關的名稱。
cookies 與完整的子域一起保存:
.ssositeA.mydomain.com
.ssositeB.mydomain.com
有沒有辦法表明 ssositeA 和 ssositeB cookies 保存在域級別,所以我們會有
.mydomain.com (as cookie's Domain)
我們可以在兩個登錄站點之間共享 session 嗎?
• 是的,您當然可以在域級別保存 cookies,而不是為 SSO 的每個子域發出 cookies,即使這些子域的根域相同。 根據RFC 2109
和RFC 6265
,如果 cookie 的域參數中的域名不以句點開頭,那么它不會讓子域讀取該 cookie,如果它以句點開頭,那么所有子域都將具有完全訪問權限該 cookie 的值,即Set-Cookie from request-host 'subdomain.myserver.com' for 'Domain=.myserver.com' would be accepted wherein the origin server's fully-qualified host name must domain-match the Domain attribute of the cookie
。
因此,通過將header 中 cookie 的 Domain 屬性設置為子域的域,這樣您就可以指示瀏覽器將 cookie 發送到所有子域,如下所示:-
Response.Cookies(“UID”)=1
Response.Cookies(“UID”).Domain = “.myserver.com” ‘
此外,您可以設置 header 中存在的“域”屬性,如下所示:-
Set-Cookie: name=value; domain=.mydomain.com
注意:- The domain attribute must domain-match the request URL for it to be valid
,這基本上意味着它必須是請求域或超級域。 因此,這適用於問題中的兩個示例,以及兩個單獨的子域之間的共享。
有關這方面的更多信息,請參閱以下鏈接:-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.