2017-06-13 24 views
0

ユーザーのグループを読み取る必要があるアプリケーションを作成しました。私はAsp.netコアを使用しています。ぼんやりしたポータル内にアプリケーションを作成し、すべて GraphAPIのアプリケーション権限を与え、[許可]ボタンをクリックしました。それから私は、ユーザーのグループを取得するためにWebApp-GroupClaims-DotNetに似たいくつかのコードを使用:getMemberGroups "操作を完了するための十分な権限がありません"

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; 
} 

残念ながら、私はいつも次の応答を得るのです:

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

このためADを照会するためのアプリケーションのための方法はありません情報?

+0

「_configHelper.GraphResourceId」の値は何ですか。紺碧の広告グラフapiを使用しているようですが、紺碧のポータルでWindows Azure Active Directory(紺色広告グラフAPI)の許可を与えていますか? –

+0

'_configHelper.GraphResourceId'は' https:// graph.windows.net'です – david

+0

あなたは誰に許可を与える青空のポータルでですか? Azure Active DirectoryまたはMicrosoft Graph?どのアプリケーションの許可? –

答えて

2

あなたのコードによれば、あなたはAzureの広告グラフのAPIコールを作成しています。次にWindows Azure Active Directory(Azure Ad Graph API)のアクセス許可を与える必要があります。

https://graph.windows.netは、Azure AD Graph APiのエンドポイントであり、紺碧のポータルでは、名前はWindows Azure Active Directoryです。 https://graph.microsoft.comは、Microsoft Graph APIのエンドポイントで、azureポータルでは、名前はMicrosoft Graphです。

関連する問題