你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

New-AzureADServiceAppRoleAssignment

向用户、组或其他服务主体分配应用角色。

语法

New-AzureADServiceAppRoleAssignment
   -ObjectId <String>
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   -Id <String>
   -PrincipalId <String>
   -ResourceId <String>
   [<CommonParameters>]

说明

New-AzureADServiceAppRoleAssignment cmdlet 将资源服务主体中的应用角色分配给用户、组或其他服务主体。 分配给服务主体的应用角色也称为应用程序权限。

注意

此处所述的行为在调用 时适用 Connect-AzureAD ,而不使用任何参数或使用 Microsoft 拥有的应用程序标识。 请参阅 示例 4 ,详细了解使用客户拥有的应用注册或服务标识进行连接时的差异。

示例

示例 1:将应用角色分配给另一个服务主体

PS C:\> Connect-AzureAD
PS C:\> New-AzureADServiceAppRoleAssignment -ObjectId $resource.ObjectId -ResourceId $resource.ObjectId -Id $appRole.Id -PrincipalId $client.ObjectId

在此示例中,为客户端服务主体分配应用角色 (应用程序权限) 资源服务主体 (例如 API) :

  • ObjectId:资源服务主体的 ObjectId (例如 API) 。
  • ResourceId:资源服务主体的 ObjectId (例如 API) 。
  • Id: (资源服务主体上定义的应用角色 ID,) 分配给客户端服务主体。 如果尚未在资源应用上定义应用角色,则可以使用 00000000-0000-0000-0000-000000000000
  • PrincipalId:要为其分配应用角色的客户端服务主体的 ObjectId。

注意

在调用 时不带任何参数时 Connect-AzureAD ,此示例适用。 请参阅 示例 4 ,了解如何在使用客户拥有的应用注册或服务标识进行连接时使用此 cmdlet。

示例 2:向用户分配应用角色

PS C:\> Connect-AzureAD
PS C:\> New-AzureADServiceAppRoleAssignment -ObjectId $resource.ObjectId -ResourceId $resource.ObjectId -Id $appRole.Id -PrincipalId $user.ObjectId

在此示例中,将向用户分配由资源应用定义的应用角色:

  • ObjectId:应用的服务主体的 ObjectId。
  • ResourceId:应用的服务主体的 ObjectId。
  • Id:应用角色的 ID (应用的服务主体上定义,) 分配给用户。 如果尚未为资源应用定义应用角色,则可以使用 00000000-0000-0000-0000-000000000000 指示应用已分配给用户。
  • PrincipalId:要向其分配应用角色的用户的 ObjectId。

注意

在调用 时不带任何参数时 Connect-AzureAD ,此示例适用。 请参阅 示例 4 ,了解如何在使用客户拥有的应用注册或服务标识进行连接时使用此 cmdlet。

示例 3:将应用角色分配给组

PS C:\> Connect-AzureAD
PS C:\> New-AzureADServiceAppRoleAssignment -ObjectId $resource.ObjectId -ResourceId $resource.ObjectId -Id $appRole.Id -PrincipalId $group.ObjectId

在此示例中,为组分配了资源应用定义的应用角色。 作为已分配组的直接成员的所有用户都被视为分配应用角色:

  • ObjectId:应用的服务主体的 ObjectId。
  • ResourceId:应用的服务主体的 ObjectId。
  • Id:应用角色的 ID (要分配给组的应用服务主体) 上定义。 如果尚未在资源应用上定义应用角色,可以使用 00000000-0000-0000-0000-000000000000 指示应用已分配给组。
  • PrincipalId:要向其分配应用角色的组的 ObjectId。

注意

在调用 时不带任何参数时 Connect-AzureAD ,此示例适用。 请参阅 示例 4 ,了解如何在使用客户拥有的应用注册或服务标识进行连接时使用此 cmdlet。

示例 4:使用客户拥有的应用或服务标识进行连接时

PS C:\> Connect-AzureAD -TenantId $tenantOrDomain -ApplicationId $appId -CertificateThumbprint $thumb
PS C:\> New-AzureADServiceAppRoleAssignment -ObjectId $client.ObjectId -ResourceId $resource.ObjectId -Id $appRole.Id -PrincipalId $client.ObjectId

使用客户拥有的应用注册或服务标识连接到 Azure AD PowerShell 模块时,此 cmdlet 的行为会发生变化,包括:

  • 作为服务主体进行连接时,以及
  • 将 参数与为客户拥有的应用注册或服务标识获取的访问令牌一起使用 AadAccessToken 时。

在这些情况下,此 cmdlet 仅用于将应用角色分配给由 ObjectIdPrincipalId 参数标识的另一个服务主体:

  • ObjectId:要为其分配应用角色的客户端服务主体的 ObjectId。
  • ResourceId:资源服务主体的 ObjectId (例如 API) 。
  • Id: (资源服务主体上定义的应用角色 ID,) 分配给客户端服务主体。 如果尚未在资源应用上定义应用角色,则可以使用 00000000-0000-0000-0000-000000000000
  • PrincipalId:要为其分配应用角色的客户端服务主体的 ObjectId。

使用客户拥有的应用或服务标识进行连接时,分别使用 New-AzureADUserAppRoleAssignmentNew-AzureADGroupAppRoleAssignment 为用户和组创建应用角色分配。

参数

-Id

指定要分配的资源服务主体上定义的应用角色 (id) 。 如果尚未在资源应用上定义应用角色,则可以使用 00000000-0000-0000-0000-000000000000 来指示资源应用或服务的分配,而无需指定应用角色。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InformationAction

指定此 cmdlet 如何响应信息事件。 此参数的可接受值为:

  • 继续
  • 忽略
  • 查询
  • SilentlyContinue
  • 停止
  • 挂起
Type:ActionPreference
Aliases:infa
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InformationVariable

指定信息变量。

Type:String
Aliases:iv
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ObjectId

指定要分配给用户、组或其他服务主体的资源服务主体 ((例如应用或 API) )的 ObjectId。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PrincipalId

指定要向其分配应用角色的用户、组或其他服务主体的 ObjectId。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ResourceId

指定要分配给用户、组或其他服务主体的资源服务主体 ((例如应用或 API) )的 ObjectId。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

备注

请参阅 New-AzureADServiceAppRoleAssignment 到 Microsoft Graph PowerShell 的迁移指南。