本文可協助您針對由識別提供者(IdP)的來賓用戶無法登入 Microsoft Entra ID 中的資源租戶時所傳回的錯誤代碼 AADSTS50020
進行疑難解答。
徵兆
當來賓用戶嘗試存取資源租使用者中的應用程式或資源時,登入會失敗,並顯示下列錯誤訊息:
AADSTS50020:來自識別提供者 {IdentityProviderURL} 的使用者帳戶 'user@domain.com' 不存在於租使用者 {ResourceTenantName}中。
當系統管理員在主租用戶檢閱登入記錄時,錯誤代碼「90072」的條目表示登入失敗。 錯誤訊息指出:
來自識別提供者 {idp} 的用戶帳戶 {email} 不存在於租使用者 {tenant} 中,而且無法存取該租使用者中的應用程式 {appId}({appName})。 必須先將該帳戶新增為租用戶中的外部使用者。 登出並使用不同的 Microsoft Entra 使用者帳戶重新登入。
原因 1:使用者使用個人 Microsoft Microsoft帳戶登入 entra 系統管理中心
當您嘗試使用您的個人Microsoft帳戶(Outlook、Hotmail 或 OneDrive)登入 Microsoft Entra 系統管理中心時,預設會連線到 Microsoft Services 租使用者。 預設租戶中沒有任何已連結的目錄可執行任何動作。 此行為是預期的。
在先前的體驗中,會建立目錄(例如:UserNamehotmail735.onmicrosoft.com),並連結到個人帳戶,您可以執行動作,例如在目錄中建立用戶帳戶。 行為現已變更。
解決方案:使用新的租使用者建立 Azure 帳戶
如果您的目標是要擁有目錄服務,您必須建立 Azure 帳戶和新的租戶:
- 流覽至 https://azure.microsoft.com/en-us/free/,然後選取 [ 免費啟動 ]。
- 請遵循指示來建立 Azure 帳戶。
- 租用戶將會與 Azure 帳戶一同建立,且您將自動被指定為全域管理員。 這會授予您此租戶內所有選項的完整存取權。
原因 2:使用不支援的帳戶類型 (多租使用者和個人帳戶)
如果您的應用程式註冊設定為單一租用戶帳戶類型,則來自其他目錄或識別提供者的用戶無法登入該應用程式。
解決方案:變更應用程式註冊指令清單中的目標使用者設定
若要確定您的應用程式註冊不是單一租用戶帳戶類型,請執行下列步驟:
在 Azure 入口網站中,搜尋並選取應用程式註冊。
選取應用程式註冊的名稱。
在側邊欄中,選取 配置清單。
在 JSON 程式代碼中,尋找 signInAudience 設定。
檢查設定是否包含下列其中一個值:
- Azure AD 和個人 Microsoft 帳戶
- AzureADMultipleOrgs
- PersonalMicrosoftAccount
如果 signInAudience 設定不包含其中一個值,請選取正確的帳戶類型,以重新建立應用程式註冊。 您目前無法在指令清單中變更 signInAudience 。
如需如何註冊應用程式的詳細資訊,請參閱快速入門:使用 Microsoft 身分識別平台 註冊應用程式。
原因 3:使用錯誤的端點 (個人和組織帳戶)
如果您的應用程式註冊支援的帳戶類型設定為下列其中一個值,您的驗證呼叫必須以符合您選取專案的 URL 為目標:
任何組織目錄中的帳戶(任何 Microsoft Entra 目錄 - 多重租戶)
任何組織目錄中的帳戶(任何 Microsoft Entra 目錄——多租戶)和個人 Microsoft 帳戶(例如 Skype、Xbox)
僅限個人Microsoft帳戶
如果您使用 https://login.microsoftonline.com/<YourTenantNameOrID>
,則來自其他組織的用戶無法存取應用程式。 您必須將這些使用者新增為請求中所指定租戶中的訪客。 在此情況下,驗證應該只會在您的租用戶上執行。 如果您預期使用者使用與另一個租使用者或身分識別提供者的同盟來登入,此案例會導致登入錯誤。
解決方案:使用正確的登入URL
針對特定應用程式類型使用對應的登入 URL,如下表所列:
應用程式類型 | 登入網址 |
---|---|
多租戶應用程式 | https://login.microsoftonline.com/organizations |
多租用戶和個人帳戶 | https://login.microsoftonline.com/common |
僅限個人帳戶 | https://login.microsoftonline.com/consumers |
在您的應用程式程式代碼中,在 設定中 Authority
套用此 URL 值。 如需 的詳細資訊Authority
,請參閱 Microsoft 身分識別平台 應用程式組態選項。
原因 4:登入錯誤的租戶
當使用者嘗試存取您的應用程式時,會傳送直接連結至應用程式,或嘗試透過 https://myapps.microsoft.com取得存取權。 在任一情況下,系統會將使用者重新導向至登入應用程式。 在某些情況下,使用者可能已經有一個正在使用的會話,並且所使用的個人帳戶與預期要使用的帳戶不同。 或者,他們本來打算使用個人來賓帳戶,但卻使用了組織帳戶進行操作(或反之亦然)。
若要確定此案例是問題,請在錯誤訊息中尋找 User account
和 Identity provider
值。 這些值是否符合預期的組合? 例如,使用者是否使用其組織帳戶登入您的租戶,而不是其原租戶? 或者使用者是否使用與已邀請的身分識別提供者不同的個人帳戶登入 live.com
身分識別提供者?
解決方案:註銷,然後從不同的瀏覽器或私人瀏覽器會話再次登入
指示用戶開啟新的私人瀏覽器會話,或讓用戶嘗試從不同的瀏覽器存取。 在此情況下,用戶必須註銷其目前的會話,然後重新嘗試登入。
原因 5:未邀請來賓使用者
嘗試登入的來賓使用者未受邀加入租戶。
解決方案:邀請來賓使用者
請確保您遵循快速入門:在 Azure 入口網站中將來賓使用者新增至您的目錄的步驟來邀請來賓使用者。
原因 6:應用程式需要使用者指派
如果您的應用程式是需要使用者指派的企業應用程式,則如果使用者不在獲指派應用程式存取權的允許使用者清單中,就會發生錯誤 AADSTS50020
。 若要檢查您的企業應用程式是否需要使用者指派:
在 Azure 入口網站 中,搜尋並選取 [企業應用程式]。
選取您的企業應用程式。
在側邊欄中,選取 屬性。
檢查 指派必要 選項是否設為 是。
解決方案:將個別或群組的存取權指派給使用者
使用下列其中一個選項將存取權指派給使用者:
若要個別指派使用者對應用程式的存取權,請參閱 將用戶帳戶指派給企業應用程式。
若要將使用者指派為指派群組或動態群組的成員,請參閱 管理應用程式的存取權。
原因 7:嘗試針對個人帳戶使用資源擁有者密碼認證流程
如果用戶嘗試使用個人帳戶的資源擁有者密碼認證 (ROPC) 流程,就會發生錯誤 AADSTS50020
。 Microsoft 身分識別平台僅在 Microsoft Entra 租戶中支援 ROPC,而不是個人帳戶。
解決方案:使用租用戶或組織專屬的端點
使用租戶專屬端點 (https://login.microsoftonline.com/<TenantIDOrName>
) 或組織端點。 受邀加入 Microsoft Entra 租戶的個人帳戶無法使用 ROPC。 如需詳細資訊,請參閱 Microsoft 身分識別平台 和 OAuth 2.0 資源擁有者密碼認證。
原因 8:先前刪除的用戶名稱已由主租用戶系統管理員重新建立
若資源租用戶中被刪除的來賓使用者名稱由主租用戶的管理員重新建立,則可能發生錯誤 AADSTS50020
。 若要確認資源租使用者中的來賓用戶帳戶與主租使用者中的使用者帳戶沒有關聯,請使用下列其中一個選項:
驗證:檢查資源租戶的來賓使用者是否比主租戶的使用者帳戶還舊。
若要檢查來賓用戶帳戶的建立日期,您可以使用 Microsoft Graph、Microsoft Entra PowerShell 或 Microsoft Graph PowerShell SDK。
Microsoft Graph
向 MS Graph API 發出要求,以檢閱使用者建立日期,如下所示:
GET https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/createdDateTime
然後,將資源租用戶中來賓使用者的建立日期和主租用戶中用戶帳戶的建立日期進行比較。 如果客體使用者是在主租用戶的用戶帳戶建立之前建立的,則此情況已確認。
Microsoft Entra PowerShell(微軟 Entra PowerShell)
執行 Get-EntraUser PowerShell Cmdlet 以檢閱使用者建立日期,如下所示:
Get-EntraUser -UserId {id | userPrincipalName} | Select-Object id, userPrincipalName, createdDateTime
然後,檢查資源租用戶中來賓使用者的建立日期,並將其與所在租用戶中用戶帳戶的建立日期進行比較。 情境成立的條件是客體使用者必須在主租戶的用戶帳戶被建立之前就已經建立。
Microsoft Graph PowerShell SDK
執行 Get-MgUser PowerShell Cmdlet 以檢閱使用者建立日期,如下所示:
$p = @('Id', 'UserPrincipalName', 'CreatedDateTime')
Get-MgUser -UserId {id | userPrincipalName} -Property $p| Select-Object $p
然後,將資源租用戶中來賓使用者的建立日期與主租用戶中用戶帳戶的建立日期進行比較。 情境若在主租戶的使用者帳戶建立之前創建了來賓使用者,則該情境會被確認。
解決方案:重設來賓用戶帳戶的兌換狀態
重設資源租戶中來賓用戶帳戶的兌換狀態。 然後,您可以保留來賓用戶物件,而不需要刪除,然後重新建立來賓帳戶。 您可以使用 Azure 入口網站、Azure PowerShell 或 Microsoft Graph API 來重設兌換狀態。 如需指示,請參閱 重設來賓用戶的兌換狀態。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。