2017-06-19 100 views
1

我想從使用註冊的應用程序clientCredentials的Azure數據目錄中檢索數據。我可以得到一個承載令牌罰款,但是當我試圖使用令牌與Azure的數據目錄API,我得到 -使用客戶端來自注冊的Azure ADD應用程序的憑證訪問Azure數據目錄API

WWW-Authenticate: Bearer realm="svc", error="InsufficientScope", error_description="A token with user_impersonation scope is required.", scope="user_impersonation" 
X-Powered-By: ASP.NET 

401 - Unauthorized: Access is denied due to invalid credentials. 
You do not have permission to view this directory or page using the credentials that you supplied. 

我已經放棄對廣告和ADC應用程序的權限,並且還增加了一個貢獻者AD中應用程序的角色。

不知道爲什麼會發生這種情況...驅使我堅果。

我可以在控制檯應用程序中使用用戶密碼憑據獲得此工作,但當我嘗試在Web應用程序中執行此操作時,這種情況會崩潰。

歡呼聲

+1

訪問權限一些角色錯誤是說你的電話沒有範圍。我猜測範圍可能是一個委託權限。在這種情況下,您不能僅使用客戶端憑證進行呼叫,因爲它需要*委託呼叫*。使用Web應用程序,您應該使用授權代碼授予而不是客戶端憑據。 – juunas

+0

@juunas,你要補充一點,作爲一個答案,我會給予好評,因爲你說的話是正確的:) – Saca

+0

增加,問題可能涉及到,但我無法測試,以確保:) – juunas

回答

1

錯誤是說你的電話沒有範圍。我猜測範圍可能是一個委託權限。在這種情況下,您只能使用客戶端憑證進行呼叫,因爲它需要委託呼叫。使用Web應用程序,您應該使用授權代碼授予而不是客戶端憑據。

1

我們目前不支持使用ClientCredentials進行授權。您需要使用用戶名/密碼登錄,以便令牌包含用戶特定的信息以便在目錄上進行授權。

_authResult =等待authContext.AcquireTokenAsync(resourceUri,的clientId,新的URI(redirectUri),新PlatformParameters(PromptBehavior.Always))

希望這有助於 莫妮卡

0

申請許可是基於客戶端憑證。基於登錄用戶權限的委託權限。

在此數據目錄中沒有任何應用程序權限。所以,你不能在基於窗口的應用程序中無需登錄。

如果你需要不用登錄彈出你authContext.AcquireTokenAsync()方法也傳遞用戶名和密碼沒有提示。

enter image description here

enter image description here

所以,你會得到401 - 未經授權:訪問被拒絕由於無效 憑據。

因爲,登錄令牌不包含任何用戶specfic信息和角色,如果你有一個的accessToken查一下jwt.io網站插入你編碼的令牌在左側右側顯示該令牌信息。它包含了該權限簡化版,包含您的令牌,因此它是拋出未經授權憑證無效

i顯示了例如訪問令牌下面許可

enter image description here

公司希望它有助於您

相關問題