你当前正在访问 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 仅用于将应用角色分配给由 和 PrincipalId 参数标识ObjectId的另一个服务主体:

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

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

参数

-Id

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

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-InformationAction

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

  • 继续
  • 忽略
  • 查询
  • SilentlyContinue
  • 停止
  • 挂起
类型:ActionPreference
别名:infa
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-InformationVariable

指定信息变量。

类型:String
别名:iv
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ObjectId

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

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-PrincipalId

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

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ResourceId

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

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

备注

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