因爲它們有點寬泛,所以很難直接解決您的問題,我需要關於您正在使用的各種租戶的更具體的詳細信息,您的應用程序的供應方式,您的應用程序的權限等。
但是,我認爲有幾個校長可以關注哪些可以幫助您調試問題。
- 所有AAD認證都發生在特定租戶的上下文中。這意味着無論何時獲取資源的訪問令牌,該令牌的範圍都限於租戶的邊界。
- 要在租戶上下文中使用客戶端應用程序進行身份驗證,您必須將應用程序註冊到您試圖訪問的租戶(業務線應用程序/單租戶)中,或者您必須讓應用程序爲多租戶,在這種情況下,您的應用應該能夠在任何租戶的情況下運行......如果發生了正確的配置。
- 您的應用試圖運行的每個租戶都必須擁有租戶中提供的應用的服務主體。該服務主體代表您在該租戶環境中的應用程序身份,並充當存儲應用程序在該租戶環境中的權限的地方。通常情況下,在該租戶的用戶同意將該應用用作登錄體驗的一部分之後,將此服務主體配置到租戶中。
- 如果您嘗試使用用戶上下文(授權代碼授權流程)來檢索有關租戶的詳細信息,則必須確保該用戶存在於您嘗試查詢的目錄中。例如,用戶U可以存在於他們的家庭租戶T1中。如果您嘗試使用該用戶帳戶查詢另一承租人T2,則會收到任意數量的描述該用戶帳戶不存在的錯誤等。您可以通過在T2中爲U創建一個來賓帳戶來解決此問題,在這種情況下,在T2中創建一個全新的用戶對象,該對象鏈接到T1中的原始用戶對象。無論如何,用戶對象應始終存在於您試圖查詢的租戶中。
- 如果您嘗試使用T1和T2中的用戶帳戶登錄應用程序,則需要確保指定要爲其實際獲取令牌的用戶。默認情況下,如果您使用公共端點,則會爲用戶主租戶獲取令牌。但是,只要您在發出請求時將其指定給我們的令牌服務,就可以爲二級租戶獲取令牌。
- 最後,如果您要對Graph API進行特定調用,那麼用於發出這些請求的客戶端應用程序需要具有對Graph API的正確權限。每個租戶都需要單獨同意租戶環境中的應用程序,以便爲其應用程序提供正確的權限。
考慮到這些原則: 您使用「unauthorized_client」獲得的錯誤似乎是二級租戶中的應用程序調配問題。請確保首先使用二級租戶的用戶登錄到應用程序,並確保該用戶具有同意您的應用程序的正確權限(租戶管理員最好在此處)。
對於第二個問題「請求url中的域名無效」,請嘗試使用一些提示here。 具體如下:
通過使用myOrganization別名。此別名僅在使用OAuth授權碼授予類型(三方)認證時可用;即使用委派的權限範圍時。別名不區分大小寫。它將替換URL中的對象標識或租戶域。使用別名時,Graph API會根據附加到請求的令牌中顯示的聲明來派生租戶。以下URL顯示瞭如何解決使用此別名的租戶的用戶資源集合: https://graph.windows.net/myorganization/users?api-version=1.6。
我希望這能讓您找到解決大部分問題的正確途徑。
2017詳細信息 - **請求url中的域名無效**如果您發現經典圖形調用(https://graph.windows.net/)出現此錯誤,請嘗試切換您的tenant guid id請求網址中包含完整的域名。這失敗了... https://graph.windows.net/GuidValue/這工程... https://graph.windows.net/MyTenantName.onmicrosoft.com/我也避免使用任何「常見」的變體 –