Как сопоставить 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"
}
}
}
@JoyWang Я хочу отфильтровать назначенные мне приложения из основного списка приложений.
Какой-нибудь процесс по этой проблеме?
У вас есть разрешение Directory.Read.All? см.: docs.microsoft.com/en-us/graph/api/…
Привет @JoyWang, спасибо за быстрый ответ, у меня есть еще один вопрос, который я отредактировал в своем предыдущем вопросе. пожалуйста помоги.
Ошибка означает, что у вас нет разрешения на вызов API, убедитесь, что у вас есть разрешение, см.: docs.microsoft.com/en-us/graph/api/…
@JoyWang, это правильный способ добавления нескольких областей - "webApiPermissionRequests": [ { "resource": "Microsoft Graph", "scope": "Application.ReadWrite.All", "Directory.Read.All" } ]
Я не знаком с С#, если вы вызываете API с приложением AD, перейдите в Azure AD на портале, в своем приложении -> Настройки-> Требуемые разрешения-> добавьте API Microsoft Graph с нужными разрешениями -> нажмите кнопку Grant permissions. Тогда ваше приложение сможет вызывать API графа MS. Убедитесь, что ваша учетная запись пользователя является глобальным администратором вашего клиента, иначе вы не сможете предоставить разрешение.
@JoyWang Я отметил это как ответ, не могли бы вы помочь мне, пока я получаю эту ошибку в управлении API, когда я одобряю запрос. [HTTP]:400 — [CorrelationId]: 25ead09e-2016-0000-22ca-2805e5e18a16 [Версия]: 16.0.0.8727 — Не удалось найти разрешение OAuth с областью действия Application.ReadWrite.All. Имя параметра: область
За ошибку вашего кода рекомендую задать ее в новом вопросе, я не знаком с c#. Если вы выполнили описанные выше шаги, разрешения вашего приложения должны быть правильными.





Нет, идентификатор напрямую не соответствует, вы не можете сделать это через эти два 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/…
Не могли бы вы включить более подробную информацию в свой вопрос? Собственно, что ты хочешь сделать?