當試圖訪問使用我收到錯誤的圖表服務客戶:圖形API - 足夠的權限來完成操作
代碼:Authorization_RequestDenied
消息:權限不足來完成操作。
研究此錯誤後,最常見的解決方案是設置API的權限。這已經完成,並有權讀取基本/完整配置文件。
我刪除並重新添加了API。
下面是我AzureAuthenticationProvider類的代碼從IAuthenticationProvider繼承:
public class AzureAuthenticationProvider : IAuthenticationProvider
{
private string _azureDomain = "myDevDom.onmicrosoft.com";
public async Task AuthenticateRequestAsync(HttpRequestMessage request)
{
try
{
string clientId = "2b823c67-1b0d-4a10-a9e1-737142516f5q";
string clientSecret = "xxxxxx";
AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/" + _azureDomain + "/oauth2/token");
ClientCredential credentials = new ClientCredential(clientId, clientSecret);
AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", credentials);
request.Headers.Add("Authorization", "Bearer " + authResult.AccessToken);
}
catch (Exception ex)
{
}
}
我試圖改變用戶端祕密無效的ID,並把它扔到了一個錯誤,所以客戶端密鑰是正確的。我也嘗試通過更改訪問令牌來驗證訪問令牌是否有效,這也會返回錯誤。
上面的代碼似乎工作正常。
下面就是我試圖訪問Azure的AD代碼:任何幫助
public async Task<IGraphServiceUsersCollectionPage> GetUsersByLastName(string lastname)
{
GraphServiceClient graphClient = new GraphServiceClient(new AzureAuthenticationProvider());
string filter = String.Format("startswith(surname, '{0}')", lastname);
IGraphServiceUsersCollectionPage users = await graphClient.Users.Request().Filter(filter).GetAsync(); //Fails on this line
return users;
}
您準確添加了哪些權限?你可以張貼截圖嗎?你需要的是*應用程序權限*來讀取用戶。 – juunas
感謝您申請權限下的建議我選擇了「讀取和寫入目錄數據」,並在委派的權限下,我已經'登錄並閱讀用戶個人資料''真正的所有用戶的基本個人資料'和'作爲簽名訪問firectory在用戶'。儘管爲了在開發應用程序中進行測試,我已經選擇了所有可用的選項,但仍然遇到了身份驗證錯誤。 – j9070749
委託權限對於此API調用無關緊要。您正在進行僅應用程序調用(指定客戶端ID和密碼)。你是否也授予了權限?你可以檢查例如訪問令牌的內容。 jwt.io – juunas