[英]ValidateIssuer option in OpenID connect authentication
我們正在使用 OIDC 庫,目前我們只允許 MSA 帳戶登錄。 因此我們配置了參數ValidateIssuer = true
和Validissuers = 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 中擁有用戶的人開放。
處理多租戶案例的一些建議
如果您提前知道有效發行者列表,請使用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/" }
如果您的應用程序的有效頒發者是動態的,或者如果您想編寫一些邏輯來收集該列表,您可以為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 };
如果這兩種情況都沒有意義,並且您的驗證邏輯與調用者所屬的租戶無關,請將TokenValidationParameters.ValidateIssuer
設置為 false,但請確保在末尾添加自定義邏輯,例如在SecurityTokenValidated
通知中。
示例代碼
使用 Azure AD 和 OpenID Connect 構建多租戶 SaaS Web 應用程序
仔細查看此示例中的這些文件:
此標志允許 OpenID Connect 身份驗證處理程序確保登錄到您的應用程序的人來自已知的 AAD 租戶。 如果將其設置為false
,則不會進行此驗證。 它實際上意味着任何訪問您的應用程序並在重定向到 AAD 時成功登錄的人都將被允許進入您的應用程序。
總之,我想說只有兩種情況你想將這個標志設置為false
是:
另外,我很想知道“應用程序已經由自定義授權備份”是什么意思。
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.