2017-06-13 3 views
0

Ich schrieb eine Anwendung, die die Gruppen eines Benutzers lesen sollte. Ich benutze Asp.net Core. Ich erstellte eine Anwendung innerhalb des Azure-Portals und gewährte alle Anwendungsberechtigungen für GraphAPI und klickte auf die Berechtigung erteilen-Schaltfläche. Dann habe ich einen Code ähnlich wie WebApp-GroupClaims-DotNet die Benutzer Gruppen abzurufen:getMemberGroups "Unzureichende Berechtigungen, um den Vorgang abzuschließen"

public async Task<IEnumerable<string>> GetGroupIdsFromGraphApiAsync(string userId) 
{ 
    var groupObjectIds = new List<string>(); 

    // Acquire the Access Token 
    var credential = new ClientCredential(_configHelper.ClientId, _configHelper.AppKey); 
    var authContext = new AuthenticationContext(_configHelper.Authority); 
    var result = await authContext.AcquireTokenAsync(_configHelper.GraphResourceId, credential); 
    var accessToken = result.AccessToken; 

    var requestUrl = 
     $"{_configHelper.GraphResourceId}/{_configHelper.Domain}/users/{userId}/getMemberGroups?api-version=1.6"; 

    // Prepare and Make the POST request 
    var client = new HttpClient(); 
    var request = new HttpRequestMessage(HttpMethod.Post, requestUrl); 
    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 
    var content = new StringContent("{\"securityEnabledOnly\":false}"); 
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
    request.Content = content; 
    var response = await client.SendAsync(request); 

    // Endpoint returns JSON with an array of Group ObjectIDs 
    if (response.IsSuccessStatusCode) 
    { 
     var responseContent = await response.Content.ReadAsStringAsync(); 
     var groupsResult = (Json.Decode(responseContent)).value; 

     foreach (string groupObjectId in groupsResult) 
      groupObjectIds.Add(groupObjectId); 
    } 
    else 
    { 
     var responseContent = await response.Content.ReadAsStringAsync(); 
     throw new WebException(responseContent); 
    } 

    return groupObjectIds; 
} 

Leider ich bekomme immer die folgende Antwort:

{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."}}} 

Gibt es keine Möglichkeit für eine Anwendung die AD für diese abfragen Information?

+0

Was ist der Wert von '_configHelper.GraphResourceId'. Scheint es, dass Sie azure ad graph api verwenden, erhalten Sie die Berechtigung für Windows Azure Active Directory (Azure Ad Graph API) in azure portal? –

+0

'_configHelper.GraphResourceId' ist' https: // graph.windows.net' – david

+0

Also in azure Portal, dem Sie die Erlaubnis erteilen? Azure Active Directory oder Microsoft Graph? und welche Antragserlaubnis? –

Antwort

2

Gemäß Ihrem Code machen Sie Azure-Ad-Graph-API-Aufrufe. Dann müssen Sie die Berechtigung für Windows Azure Active Directory (azure ad graph api) erteilen.

https://graph.windows.net ist der Endpunkt für Azure AD Graph APi. Im azurblauen Portal lautet der Name Windows Azure Active Directory. https://graph.microsoft.com ist der Endpunkt für Microsoft Graph api, in azurblauem Portal lautet der Name Microsoft Graph

Verwandte Themen