Getting Forbidden/Access Denied error from Azure AD Graph Education API

一世执手 提交于 2019-12-24 03:30:24

问题


I am using Graph education API, want all information about the user profile. Getting below error in response/json objects Forbidden AccessDenied Required claim values are not provided.

public async Task<ActionResult> GetUserDetails()
        {
            List<User> listUser = new List<User>();
            List<UserRole> userRole = new List<UserRole>();


            string clientId = configuration.GetValue<string>("AzureAd:ClientId");
            string clientSecret = configuration.GetValue<string>("AzureAd:ClientSecret");


            //var email = User.Identity.Name;

            //AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/LPExamDev.onmicrosoft.com/oauth2/token");
            AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/LPExamStaging.onmicrosoft.com/oauth2/token");
            ClientCredential creds = new ClientCredential(clientId, clientSecret);
            AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", creds);

            HttpClient http = new HttpClient();            
            string url = $"https://graph.microsoft.com/v1.0/education/users";  // Microsoft Education Graph

            //string url = $"https://graph.microsoft.com/v1.0/users"; // Microsoft Graph // Working fine.
            ////string url = "https://graph.windows.net/LPExamStaging.onmicrosoft.com/users?api-version=1.6"; 

            // Append the access token for the Graph API to the Authorization header of the request by using the Bearer scheme.
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
            HttpResponseMessage response = await http.SendAsync(request);
            var json = await response.Content.ReadAsStringAsync();
            var jsonResponse = response.ToString();
            bool responseCode = response.IsSuccessStatusCode;
            //ViewBag.userData = json;

            //SaveAPIData(json);


            if (responseCode)
            {
                SaveAPIData(json);
            }
       }

回答1:


You need to grant your application EduRoster.Read.All permission and click grant admin consent button.

Login azure portal->click Azure Active Directory->click App registrations(preview)->click your application->click API permissions->add a permission->choose Application permissions

Then click Grant admin consent button.

You can decoded your access token by using https://jwt.io/ to check if you have already got that permission.



来源:https://stackoverflow.com/questions/55645859/getting-forbidden-access-denied-error-from-azure-ad-graph-education-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!