azure - Azure 服务主体:为服务主体授予 appRoleAssignment 确实会更新原始权限的状态
问题描述
我正在尝试授予管理员同意使用 Microsoft 图形 API 分配的权限。我执行的步骤如下:
创建定义了“appRoles”数组的应用程序。
使用 appId 创建服务主体。
为服务主体授予 appRoleAssignment。我运行了http post请求:
https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
- 在 Azure 门户中,我看到它不是授予最初存在的权限,而是创建另一个权限并授予对它的同意,如下图所示。
为什么即使“appRoleId”相同,它也不授予原始权限?我想授予原始权限,有人可以告诉我吗?谢谢。
解决方案
当然,它不会授予原始权限,当您创建应用程序并公开 API 权限时,此权限和 in 的权限Exchange
完全是两个不同的权限,来自不同的 API,无论appRoleId
它们使用什么。
要为您的应用授予full_access_as_app
应用程序权限,请按照以下步骤操作。
1.在门户中导航到您的 AD 应用程序 -> Manifest
-> requiredResourceAccess
,获取resourceAppId
and id
,记id
下appRoleId
.
2.导航到Azure Active Directory
门户中的 -> Enterprise applications
-> 搜索resourceAppId
步骤 1 中的获取,然后您将找到Office 365 Exchange Online
-> 单击它 -> Overview
-> 获取Object ID
,记下它为resourceId
.
注意:这Object ID
在不同的 AAD 租户中有所不同。
3.导航到您的 AD 应用程序 -> 单击Managed application in local directory
,然后获取Object ID
,将其记为principalId
。
4.然后调用您使用的 Microsoft Graph -为服务主体授予 appRoleAssignment,使用之前获得的值。
POST https://graph.microsoft.com/v1.0/servicePrincipals/<resourceId>/appRoleAssignedTo
{
"principalId": "<principalId>",
"resourceId": "<resourceId>",
"appRoleId": "<appRoleId>"
}
我在Graph Explorer中测试它:
检查门户中的结果,它工作正常。
推荐阅读
- laravel - laravel 验证问题 - 验证不起作用
- python - 我正在为 7 段显示编写代码(不是 arduino 代码)我想在单行上打印输出
- spring-boot - 无法访问zuul网关后面的spring boot admin
- celery - 芹菜。从代码运行任务失败,无限“待定”状态
- json - 需要帮助创建计算字段
- authentication - 我们应该与访问令牌一起更新刷新令牌吗?
- generics - 使用内部自动类型定义 Nim 概念时遇到问题
- flutter - 使用 Flutter Hooks 实现 Flutter 过渡
- c++ - 在基类和派生类中分离 ODE 和 ODE 求解器
- api - 万维网上的一切都使用 REST 吗?