我們的應用程序將做簡單的User.ReadBasic.All函數,根據我的理解,它不需要管理員權限。 使用流記錄在這裏:https://graph.microsoft.io/en-us/docs/authorization/app_onlyAuthorization_IdentityNotFound錯誤MS Graph API
POST https://login.microsoftonline.com/{tenantId}/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=<clientId>
&client_secret=<clientSecret>
&resource=https://graph.microsoft.com
我能夠調用返回以下錯誤消息的圖形時,獲得一個有效的訪問令牌,但是:
「code": "Authorization_IdentityNotFound", "The identity of the calling application could not be established."
我們已經建立了我們的應用程序在管理控制檯中擁有User.ReadAll.Basic權限,有趣的是,當我使用我自己的憑證/令牌緩存啓動具有appId和Secret的ConfidentialClientApplication實例時,我確實從API獲得了成功的結果,並且爲令牌調用AcquireTokenSilentAsync:
string signedInUserID = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
tokenCache = new SessionTokenCache(
signedInUserID,
HttpContext.Current.GetOwinContext().Environment["System.Web.HttpContextBase"] as HttpContextBase);
ConfidentialClientApplication cca = new ConfidentialClientApplication(
appId,
redirectUri,
new ClientCredential(appSecret),
tokenCache);
但是我們正在創建一個無狀態,無頭的服務,它將沒有用戶交互,因此理想情況下我們不想回複用戶憑證和令牌緩存以檢索訪問令牌。我不確定爲什麼一個場景有效,另一個是返回IdentityNotFound錯誤,並且您有任何建議都是值得歡迎的。
你能解決這個問題嗎?我有同樣的問題 – NBajanca
嗨@NBajanca是這是一個關於我們試圖訪問的特定範圍管理員權限的問題。一旦我們的應用程序被授予訪問管理員讀取我們租戶中的目錄數據,我們就可以通過應用程序身份查詢(我們決定使用比應用程序祕密更安全的證書)讓我知道如果您有任何其他問題 – ranah
謝謝,同時我也發現了這一點。我在Microsoft圖形文檔中創建了一個問題,看看他們是否可以更好地解釋範圍 – NBajanca