簡體   English   中英

Azure AD B2C 容易受到 Open Redirect 的攻擊?

[英]Azure AD B2C vulnerable to Open Redirect?

我正在使用 OWIN 和 OpenId 使用 Azure AD B2C 對我的 Web 應用程序的用戶進行身份驗證,Startup.Auth.cs 具有如下代碼:

app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                 MetadataAddress = string.Format(AadInstance, Tenant, policy),
                AuthenticationType = policy,
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,
                RedirectUri = postLogoutRedirectUri,
                Notifications = new OpenIdConnectAuthenticationNotifica....

在注銷時,它會像這樣導致重定向到 postLogoutRedirectUrl

https://login.microsoftonline.com/MY_TENANT/oauth2/logout?p=my_policy&post_logout_redirect_uri=https%3A%2F%2Fgoogle.com%2F

登出后重定向 URI 存在於門戶的重定向 URI 中。

如果我停止瀏覽器並將地址欄中的 post logout uri 更改為 https%3A%2F%2Fevil.com%2F,即使此 url https://evil.com/不在允許的重定向中,重定向也會正確發生里。

為什么 AD B2C 不停止重定向? 這不是對漏洞開放嗎?

使用 Azure AD B2C 登錄時,B2C 服務會向“redirect_uri”(應用)發送一個令牌。 由於令牌需要保持安全,B2C 服務要求您將應將令牌發送到的 URL 列入白名單。

當您退出時,B2C 服務不會將任何安全信息傳輸回應用程序。 因此,即使用戶被重定向到惡意站點,也不會丟失任何安全內容。

您可以更改此行為以強制 Azure AD B2C 僅在有效 ID 令牌作為注銷請求中的參數傳入時才處理注銷重定向。 要讓 B2C 自動包含 ID 令牌並檢查其是否存在,只需在 Azure 門戶中編輯您的登錄/注冊策略,即:

在此處輸入圖片說明

或者,如果您使用自定義策略,您可以將SingleSignOn元素添加到UserJourneyBehaviors部分,並將EnforceIdTokenHintOnLogout設置為 true,即:

<UserJourneyBehaviors>
     <SingleSignOn Scope="Tenant" EnforceIdTokenHintOnLogout="true" />

</UserJourneyBehaviors>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM