Установить URL для входа в GraphApi B2C - PullRequest
0 голосов
/ 09 октября 2018

Мне нужно запросить Graph API, чтобы получить имя пользователя в претензиях.Я реализовал кое-что на основе того, что нашел в сети, но я продолжаю получать 403 Forbidden от Graph API.Может ли кто-нибудь помочь мне с этим?

enter image description here

Это мой код:

var clientId = "clientId";
var clientSecret = "clienSecret";
var tenant = "tenantName";
var userObjectId = claimsPrincipal.Claims.Where(i => i.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier").FirstOrDefault().Value;

var aadGraphVersion = "api-version=1.6";
var query = "/users/" + userObjectId;

AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/" + tenant);

// The ClientCredential is where you pass in your client_id and client_secret, which are 
// provided to Azure AD in order to receive an access_token using the app's identity.
    ClientCredential credential = new ClientCredential(clientId, clientSecret);

    // First, use ADAL to acquire a token using the app's identity (the credential)
  // The first parameter is the resource we want an access_token for; in this case, the Graph API.
    AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.windows.net", credential);

    // For B2C user management, be sure to use the Azure AD Graph API for now.
    HttpClient http = new HttpClient();

    //var url = "https://graph.windows.net/" + tenant + "/users/" + userObjectId + "/?api-version=1.6";

    //var url = graphResource + "tenant" + "/users/" + userObjectId + "/?api-version=1.6";
    string url = "https://graph.windows.net/" + tenant + "/users/" + userObjectId +  "?" + aadGraphVersion;
    //url += "&" + query;

    // Append the access token for the Graph API to the Authorization header of the request, using the Bearer scheme.
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
     HttpResponseMessage response = await http.SendAsync(request);

     if (!response.IsSuccessStatusCode)
     {
          string error = await response.Content.ReadAsStringAsync();
          object formatted = JsonConvert.DeserializeObject(error);
          throw new WebException("Error Calling the Graph API: \n" + JsonConvert.SerializeObject(formatted, Formatting.Indented));
     }

Я думаю, у меня проблема сURL, который установлен неправильно.Токен правильный, с учетными данными все в порядке.

1 Ответ

0 голосов
/ 10 октября 2018

Я думаю, что это проблема с URL.Вы получаете эту ошибку, поскольку вы предоставили пользователю разрешения на чтение для вашего зарегистрированного приложения.Убедитесь, что -

  1. Вы заходите в меню регистрации приложений на своем арендаторе
  2. Выберите меню «Необходимые разрешения» и нажмите Windows Azure Active Directory
  3. В меню «Включить доступ» выберите «Чтение данных каталога» в разделе «Разрешения приложения» и нажмите «Сохранить».
  4. После сохранения в меню «Необходимые разрешения» нажмите кнопку «Предоставить разрешения», чтобысогласие.

Вам может потребоваться выбрать другие параметры, такие как «Чтение и запись данных каталога», если вы хотите предоставить свое приложение для создания / обновления / удаления пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...