Как создать область API с помощью Azure AD Graph API - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь использовать Azure AD Graph API для создания области API для приложения Azure AD B2 C. Это операция, выполняемая с помощью колонки «Открыть API» на портале.

Я пробовал добавить область видимости непосредственно в приложение следующим образом:

var current = await graphClient.Applications[appId].Request().GetAsync();
var currentList = current.Api.Oauth2PermissionScopes ?? new List<PermissionScope>();
var newScope = new PermissionScope
{
    AdminConsentDescription = scopeDescription,
    AdminConsentDisplayName = scopeDescription,
    IsEnabled = true,
    Type = "Admin",
    Value = scopeName
};
var updated = new Application { 
    Api = new ApiApplication { 
        Oauth2PermissionScopes = currentList.Append(newScope).ToList() 
    } 
};
await graphClient.Applications[appId].Request().UpdateAsync(updated);

Однако, когда я сделай это, я получаю исключение:

Microsoft.Graph.ServiceException Код: Требуемое значение Сообщение: Значение свойства api.oauth2PermissionScopes.id требуется, но оно пустое или отсутствует.

Означает ли это, что мне нужно создать область отдельно, а затем добавить ее в приложение? Просматривая документы Graph API, не совсем понятно, как это сделать, и я тоже не нашел статей, в которых это обсуждалось.

Как вы используете Graph API для создания областей API?

1 Ответ

0 голосов
/ 10 августа 2020

, если вы хотите использовать Microsoft Graph API для создания области API для приложения Azure AD B2 C, нам необходимо определить объект PermissionScope. Объект должен предоставить id (это GUID).

Например

  1. Регистрация приложения

  2. Предоставить разрешения API

    • В разделе Управление выберите Разрешения API .
    • В разделе Настроенные разрешения , выберите Добавить разрешение .
    • Выберите вкладку Microsoft API , затем выберите Microsoft Graph .
    • Выберите Разрешения приложения .
    • Установите флажок разрешения Application.ReadWrite.All для предоставления вашему приложению.
    • Выберите Добавить разрешения . В соответствии с указаниями, подождите несколько минут, прежде чем перейти к следующему шагу.
    • Выберите Предоставить согласие администратора для (ваше имя клиента) .
  3. Создать секрет клиента

  4. код

 static async Task Main(string[] args)
        {
            string clientId = "0159ec7d-f99f-***";
            string clientSecret = "G_fM3QKa***essTRX23t1_o";
            string tenantDomain = "{your tenat name}.onmicrosoft.com";

            IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
                        .Create(clientId)
                        .WithTenantId(tenantDomain)
                        .WithClientSecret(clientSecret)
                        .Build();

            ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);

            GraphServiceClient graphClient = new GraphServiceClient(authProvider);
            var id = "fa89ac50-d5fd-47cb-9f3f-833f413a2ed4";
            var app =await graphClient.Applications[id].Request().GetAsync();
            var updated = new Application();
            if (app.IdentifierUris.ToList().Count == 0) {
                updated.IdentifierUris = new string[] { $"https://{tenantDomain}/{app.AppId}" };
            }

            var appscope = app.Api.Oauth2PermissionScopes.ToList();
            var newScope = new PermissionScope
            {
                Id = Guid.NewGuid(),
                AdminConsentDescription = "Allow the application to have read-only access to all Employee data",
                AdminConsentDisplayName = "Read-only access to Employee records",
                IsEnabled = true,
                Type = "Admin",
                Value = "Employees.Read.All"
            };
            appscope.Add(newScope);
            updated.Api = new ApiApplication { Oauth2PermissionScopes =appscope };
            await graphClient.Applications[id].Request().UpdateAsync(updated);


        }

enter image description here

For more details, please refer to здесь .

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