Как сопоставить AppRoleAssignments с приложениями в «API проводника графов»

Как сопоставить https://graph.microsoft.com/beta/me/appRoleAssignments с https://graph.microsoft.com/beta/applications.

Какой идентификатор должен совпадать?

Как сравнить эти два кода JSON -

   {
        "id": "cLsrKP9FQU-3yUaE6gaYwgT2qe43q4pAqMb4Kr9Cdp4",
        "creationTimestamp": "2019-04-08T06:17:53.349594Z",
        "appRoleId": "00000000-0000-0000-0000-000000000000",
        "principalDisplayName": "<User Name>",
        "principalId": "282bbb70-45ff-4f41-b7c9-4684ea0698c2",
        "principalType": "User",
        "resourceDisplayName": "Postman",
        "resourceId": "d24064b4-1ee0-4507-a220-6faab7ba3fe0"
    },

С участием

    {
        "id": "b5bb2bb9-bb5e-426a-a107-d2212020f614",
        "deletedDateTime": null,
        "isFallbackPublicClient": false,
        "appId": "c21feb4a-040e-4067-8c14-55b1e015fc17",
        "applicationTemplateId": null,
        "identifierUris": [
            "https://<OrgName>.onmicrosoft.com/5d959b28-00fd-4f67-8d14-1a6276919b28"
        ],
        "createdDateTime": "2019-02-27T07:33:40Z",
        "displayName": "Postman",
        "isDeviceOnlyAuthSupported": null,
        "groupMembershipClaims": null,
        "optionalClaims": null,
        "orgRestrictions": [],
        "publisherDomain": "<OrgName>.onmicrosoft.com",
        "signInAudience": "AzureADMyOrg",
        "tags": [],
        "tokenEncryptionKeyId": null,
        "api": {
            "requestedAccessTokenVersion": null,
            "acceptMappedClaims": null,
            "knownClientApplications": [],
            "oauth2PermissionScopes": [
                {
                    "adminConsentDescription": "Allow the application to access Postman on behalf of the signed-in user.",
                    "adminConsentDisplayName": "Access Postman",
                    "id": "2e9e3ada-8570-4e8a-b02b-f0822f4fd63c",
                    "isEnabled": true,
                    "type": "User",
                    "userConsentDescription": "Allow the application to access Postman on your behalf.",
                    "userConsentDisplayName": "Access Postman",
                    "value": "user_impersonation"
                }
            ],
            "preAuthorizedApplications": []
        },

Я хочу отфильтровать назначенные мне приложения из основного списка приложений. Какой идентификатор должен совпадать?

Отредактировано-

Я получаю сообщение об ошибке 403 при вызове этого API через веб-часть — https://graph.microsoft.com/beta/applications

private _getListApplications(param): Promise<any> {
return this.context.aadHttpClientFactory
  .getClient('https://graph.microsoft.com')
  .then((client: AadHttpClient) => {
    return client
      .get("https://graph.microsoft.com/beta/applications", AadHttpClient.configurations.v1);
  }).
  then((responseListAllApps: SPHttpClientResponse) => {
    return responseListAllApps.json();
  });

}

{
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"request-id": "a0cae64d-ae22-47a3-a765-3abe2b1c34a1",
"date": "2019-04-08T09:23:25"
}
}
}

Не могли бы вы включить более подробную информацию в свой вопрос? Собственно, что ты хочешь сделать?

Joy Wang 08.04.2019 09:17

@JoyWang Я хочу отфильтровать назначенные мне приложения из основного списка приложений.

user10009821 08.04.2019 09:21

Какой-нибудь процесс по этой проблеме?

Joy Wang 08.04.2019 10:28

У вас есть разрешение Directory.Read.All? см.: docs.microsoft.com/en-us/graph/api/…

Joy Wang 08.04.2019 11:38

Привет @JoyWang, спасибо за быстрый ответ, у меня есть еще один вопрос, который я отредактировал в своем предыдущем вопросе. пожалуйста помоги.

user10009821 08.04.2019 11:40

Ошибка означает, что у вас нет разрешения на вызов API, убедитесь, что у вас есть разрешение, см.: docs.microsoft.com/en-us/graph/api/…

Joy Wang 08.04.2019 11:43

@JoyWang, это правильный способ добавления нескольких областей - "webApiPermissionRequests": [ { "resource": "Microsoft Graph", "scope": "Application.ReadWrite.All", "Directory.Read.All" } ]

user10009821 08.04.2019 11:50

Я не знаком с С#, если вы вызываете API с приложением AD, перейдите в Azure AD на портале, в своем приложении -> Настройки-> Требуемые разрешения-> добавьте API Microsoft Graph с нужными разрешениями -> нажмите кнопку Grant permissions. Тогда ваше приложение сможет вызывать API графа MS. Убедитесь, что ваша учетная запись пользователя является глобальным администратором вашего клиента, иначе вы не сможете предоставить разрешение.

Joy Wang 08.04.2019 11:56

@JoyWang Я отметил это как ответ, не могли бы вы помочь мне, пока я получаю эту ошибку в управлении API, когда я одобряю запрос. [HTTP]:400 — [CorrelationId]: 25ead09e-2016-0000-22ca-2805e5e18a16 [Версия]: 16.0.0.8727 — Не удалось найти разрешение OAuth с областью действия Application.ReadWrite.All. Имя параметра: область

user10009821 08.04.2019 12:23

За ошибку вашего кода рекомендую задать ее в новом вопросе, я не знаком с c#. Если вы выполнили описанные выше шаги, разрешения вашего приложения должны быть правильными.

Joy Wang 08.04.2019 12:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
10
330
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет, идентификатор напрямую не соответствует, вы не можете сделать это через эти два API. Вам нужно использовать GET https://graph.microsoft.com/beta/servicePrincipals/xxxxxxxxx как средство.

Сначала вызовите GET https://graph.microsoft.com/beta/me/appRoleAssignments, скопируйте resourceId в ответ, это object id целевого ресурса (субъекта-службы), для которого было выполнено назначение. Затем позвоните GET https://graph.microsoft.com/beta/servicePrincipals/<resourceId>, appId в ответе — это application id приложения AD. Затем позвоните GET https://graph.microsoft.com/beta/applications, appId в ответе совпадает с appId, перенастроенным GET https://graph.microsoft.com/beta/servicePrincipals/<resourceId>. Тогда вы сможете соответствовать им.

Дополнительные сведения о свойствах см. по этим трем ссылкам:

Не могли бы вы помочь в этом вопросе, перейдите по этому URL-адресу: stackoverflow.com/questions/56559338/…

Chirag 12.06.2019 13:57

Другие вопросы по теме