簡體   English   中英

OpenID 連接身份驗證中的 ValidateIssuer 選項

[英]ValidateIssuer option in OpenID connect authentication

我們正在使用 OIDC 庫,目前我們只允許 MSA 帳戶登錄。 因此我們配置了參數ValidateIssuer = trueValidissuers = https://login.microsoftonline.com/..”但是,我們現在需要將其他 AAD 租戶(例如:abc@dell.com)加入我們的應用程序,因此我們決定設置ValidateIssuer = false

由於我的應用程序已經通過自定義授權進行了備份,我發現很難完全理解這個標志的用途。 基本上我的問題是在什么情況下不想將此標志設置為 false? 如果設置為 false,可能會遇到什么風險?

我查看了此處發布的 AAD 文檔,但仍然無法從示例代碼片段的評論中找到令人信服的回應:

        // ValidateIssuer set to false to allow work accounts from any organization to sign in to your application
        // To only allow users from a single organizations, set ValidateIssuer to true and 'tenant' setting in web.config to the tenant name or Id (example: contoso.onmicrosoft.com)
        // To allow users from only a list of specific organizations, set ValidateIssuer to true and use ValidIssuers parameter
        TokenValidationParameters = new TokenValidationParameters()
        {
            ValidateIssuer = false
        },

正如另一個答案已經提到的那樣,如果您離開ValidateIssuer = false ,那么 OIDC 中間件將不會嘗試驗證發行者租戶,這實際上意味着您的應用程序對任何在 Azure AD 中擁有用戶的人開放。

處理多租戶案例的一些建議

  1. 如果您提前知道有效發行者列表,請使用TokenValidationParameters.ValidIssuers中的發行者列表。 例子:

     ValidIssuers = new List<string>() { "https://sts.windows.net/6d9c0c36-c30e-442b-b60a-ca22d8994d14/", "https://sts.windows.net/f69b5f46-9a0d-4a5c-9e25-54e42bbbd4c3/", "https://sts.windows.net/fb674642-8965-493d-beee-2703caa74f9a/" }
  2. 如果您的應用程序的有效頒發者是動態的,或者如果您想編寫一些邏輯來收集該列表,您可以為TokenValidationParameters.IssuerValidator編寫一個實現,其中包含您的自定義邏輯。 您只需要設置一個將用於驗證頒發者的委托。

     TokenValidationParameters validationParameters = new TokenValidationParameters { ValidateIssuer = true, // Set this to a delegate and write your own custom implementation there. See code sample URL ahead for more details. IssuerValidator = AadIssuerValidator.ValidateAadIssuer };
  3. 如果這兩種情況都沒有意義,並且您的驗證邏輯與調用者所屬的租戶無關,請將TokenValidationParameters.ValidateIssuer設置為 false,但請確保在末尾添加自定義邏輯,例如在SecurityTokenValidated通知中。

示例代碼

使用 Azure AD 和 OpenID Connect 構建多租戶 SaaS Web 應用程序

仔細查看此示例中的這些文件:

此標志允許 OpenID Connect 身份驗證處理程序確保登錄到您的應用程序的人來自已知的 AAD 租戶。 如果將其設置為false ,則不會進行此驗證。 它實際上意味着任何訪問您的應用程序並在重定向到 AAD 時成功登錄的人都將被允許進入您的應用程序。

總之,我想說只有兩種情況你想將這個標志設置為false是:

  • 您事先不知道哪些租戶可以連接到您的應用程序; 要么
  • 您希望允許來自每個 AAD 租戶的人員連接到您的應用程序。

另外,我很想知道“應用程序已經由自定義授權備份”是什么意思。

干杯

暫無
暫無

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

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