0

我試圖在單一租戶模式下運行active-directory-dotnet-webapi-onbehalfof示例。我已經爲租戶註冊了Web應用程序服務和本機應用程序客戶端作爲全局管理員。當我運行示例時,作爲租戶中的用戶,只有在彈出同意(首次爲用戶)後,我才能在客戶端中獲得令牌,然後調用將其發送給服務,但在此處會失敗,並顯示在下面。這是爲什麼?文檔說,當一個租戶管理員註冊申請時,不需要進一步的同意?當遠程webapi嘗試獲取OBO令牌時,我認爲不可能同意。有些東西似乎是越野車... AAD團隊,請澄清如何使用OBO功能。示例active-directory-dotnet-webapi-onbehalfof無法正常工作

AADSTS65001:用戶或管理員未同意使用ID爲'b824502e-fe8a-4770-bd98-8d65a07efcc3'的應用程序。爲此用戶和資源發送交互式授權請求。 跟蹤ID:ad7843d0-be4e-4098-8f7c-43c8e5505cfc 相關ID:140466a4-7250-429f-8843-dbd4f63dc60e 時間戳:2016年11月25日21:46:13Z

回答

1

當使用登記的應用程序作爲租戶管理員的Azure管理門戶(manage.windowsazure.com),那麼只要在相同租戶中檢索到後續令牌,您就不應該獲得同意。

因爲您已經看到本地客戶端應用程序的許可,然後得到該錯誤消息,我們必須假設某些內容不被滿足,這會壓制您的應用程序的許可。

要解決此問題,我的建議是簡單地啓動交互式授權請求,就像錯誤消息所暗示的一樣。您可以通過爲您的應用程序生成一個登錄URL,並使用特定的查詢字符串來強制提示租戶廣泛同意(提示= admin_consent)。

下面是URL,你需要完成的骨架:

https://login.microsoftonline.com/<TenantID>/oauth2/authorize?client_id=<AppID>&response_type=code&redirect_uri=<RedirectURI>&resource=<ResourceURI>&prompt=admin_consent 

您可以爲所有你註冊的應用做到這一點,你不應該遇到同意的問題(假設你確實身份登錄,租戶管理員)。

我希望這可以解決您的問題。

+0

是的,我知道互動式同意技巧 - 問題在於OBO功能無法像現有文檔那樣開箱即用。希望這一點很快就會解決。 –

+0

我覺得好像您在OBO功能中發現問題,但實際上這是一個同意問題。正如我在文章中提到的,Azure門戶確實寫入了許可,假設滿足一系列要求。您的調查應該試圖瞭解什麼問題導致同意記錄不被記錄。例如,您可能會發現您的用戶帳戶實際上不是租戶管理員。另請記住,每個參與OBO流程的應用程序都需要記錄同意。 –