将自定义角色分配给 Azure Active Directory 系统托管标识
Assign custom role to Azure Active Directory System managed identity
为了在 APIS 之间建立 Azure AD 系统托管身份,我在应用程序清单中为我的目标 API 定义了一个自定义角色。
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"description": "Allow the application to read all things as itself.",
"displayName": "Read all things",
"id": "86a914fa-a862-4962-9975-be5c9a05dca3",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Things.Read.All"
}
现在我想将此角色分配给将要调用它的 api,以便我可以在从 AzureServiceTokenProvider 收到的访问令牌中验证它。
问题是我在应用程序注册中没有看到系统分配的身份。
身份下有一个按钮(声明系统分配的身份)'Azure Role Assignments',它导致添加角色分配。这里有一个角色列表。我正在寻找我定义的自定义角色,它不在下拉列表中。
如何将定义的角色分配给系统身份,以便它可以访问允许的 api 或 api,但不能访问更多?我希望在访问令牌中获得此角色。这是正确的期望吗?
您定义的是app role。但是“Azure Role Assignments”用于为订阅分配角色。它们完全是两种不同的东西。
您可以使用 Microsoft Graph API 到 Grant an appRoleAssignment to a service principal。
POST https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
Content-Type: application/json
Content-Length: 110
{
"principalId": "principalId-value",
"resourceId": "resourceId-value",
"appRoleId": "appRoleId-value"
}
在此示例中,{id}
和 {resourceId-value}
都是资源服务主体的对象 ID,它是与您在其中创建 appRoles 的 Azure AD 应用关联的企业应用。您可以这样找到:
而 {principalId-value}
将是 Azure 资源托管标识的 ID。在这里找到它:
{appRoleId-value}
是你在manifest中创建的app角色的id。
您可以使用管理员帐户登录 Microsoft Graph Explorer 以调用 Microsoft Graph API。
如果要验证结果是否成功,请导航至 Azure 门户 -> Azure Active Directory -> 企业应用程序 -> 所有应用程序。输入 Azure 资源的名称。
然后你会发现app role(申请权限)已经被授予
为了在 APIS 之间建立 Azure AD 系统托管身份,我在应用程序清单中为我的目标 API 定义了一个自定义角色。
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"description": "Allow the application to read all things as itself.",
"displayName": "Read all things",
"id": "86a914fa-a862-4962-9975-be5c9a05dca3",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Things.Read.All"
}
现在我想将此角色分配给将要调用它的 api,以便我可以在从 AzureServiceTokenProvider 收到的访问令牌中验证它。 问题是我在应用程序注册中没有看到系统分配的身份。
身份下有一个按钮(声明系统分配的身份)'Azure Role Assignments',它导致添加角色分配。这里有一个角色列表。我正在寻找我定义的自定义角色,它不在下拉列表中。
如何将定义的角色分配给系统身份,以便它可以访问允许的 api 或 api,但不能访问更多?我希望在访问令牌中获得此角色。这是正确的期望吗?
您定义的是app role。但是“Azure Role Assignments”用于为订阅分配角色。它们完全是两种不同的东西。
您可以使用 Microsoft Graph API 到 Grant an appRoleAssignment to a service principal。
POST https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
Content-Type: application/json
Content-Length: 110
{
"principalId": "principalId-value",
"resourceId": "resourceId-value",
"appRoleId": "appRoleId-value"
}
在此示例中,{id}
和 {resourceId-value}
都是资源服务主体的对象 ID,它是与您在其中创建 appRoles 的 Azure AD 应用关联的企业应用。您可以这样找到:
而 {principalId-value}
将是 Azure 资源托管标识的 ID。在这里找到它:
{appRoleId-value}
是你在manifest中创建的app角色的id。
您可以使用管理员帐户登录 Microsoft Graph Explorer 以调用 Microsoft Graph API。
如果要验证结果是否成功,请导航至 Azure 门户 -> Azure Active Directory -> 企业应用程序 -> 所有应用程序。输入 Azure 资源的名称。
然后你会发现app role(申请权限)已经被授予