创建自定义应用程序

本文介绍如何使用 Microsoft Entra PowerShell 创建自定义应用程序并向其授予权限。 此过程涉及定义角色、分配用户和组,以及设置 API 权限以有效管理Microsoft Entra资源。

了解这些步骤对于安全地管理访问权限并确保应用程序具有适当的权限至关重要。 它有助于在Microsoft Entra生态系统中保持安全性和运营效率。

先决条件

若要创建自定义应用程序并向其授予权限,需要:

使用 PowerShell 创建应用程序

使用自定义应用程序隔离和限制为Microsoft Entra资源授予的权限。

# Connect to Entra with required scopes
Connect-Entra -Scopes 'Application.ReadWrite.All'

# Define application name and redirect URI
$appName = 'Entra PowerShell Helpdesk App'
$redirectUri = 'http://localhost'

# Create a new application
$app = New-EntraApplication -DisplayName $appName -PublicClient @{ RedirectUris = $redirectUri } -IsFallbackPublicClient $False

# Create a service principal for the application
$servicePrincipal = New-EntraServicePrincipal -AppId $app.AppId

使用 PowerShell 启用分配所需的功能

# Set service principal parameters
Set-EntraServicePrincipal -ServicePrincipalId $servicePrincipal.Id -AppRoleAssignmentRequired $True

使用 PowerShell 分配用户和组

# Get a user and a group
$user = Get-EntraUser -UserId 'AdeleV@contoso.com'
$group = Get-EntraGroup -Search 'Sales and Marketing'

# Assign users and groups to the application
$emptyGuidUser = [Guid]::Empty.ToString()
New-EntraUserAppRoleAssignment -ObjectId $user.Id -PrincipalId $user.Id -ResourceId $servicePrincipal.Id -Id $emptyGuidUser

$emptyGuidGroup = [Guid]::Empty.ToString()
New-EntraGroupAppRoleAssignment -GroupId $group.Id -PrincipalId $group.Id -ResourceId $servicePrincipal.Id -Id $emptyGuidGroup

使用 PowerShell 定义所需的资源和权限

# Get Graph service principal
$graphApiId = '00000003-0000-0000-c000-000000000000'
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "AppId eq '$graphApiId'"
$delegatedPermission = 'User.Read.All'
$app = Get-EntraApplication -Filter "DisplayName eq '$appName'"

# Create resource access object
$resourceAccessDelegated = New-Object Microsoft.Open.MSGraph.Model.ResourceAccess
$resourceAccessDelegated.Id = ((Get-EntraServicePrincipal -ServicePrincipalId $graphServicePrincipal.Id).Oauth2PermissionScopes | Where-Object { $_.Value -eq $delegatedPermission }).Id
$resourceAccessDelegated.Type = 'Scope'

# Create required resource access object
$requiredResourceAccessDelegated = New-Object Microsoft.Open.MSGraph.Model.RequiredResourceAccess
$requiredResourceAccessDelegated.ResourceAppId = $graphApiId
$requiredResourceAccessDelegated.ResourceAccess = $resourceAccessDelegated

# Set application required resource access
Set-EntraApplication -ApplicationId $app.Id -RequiredResourceAccess $requiredResourceAccessDelegated

使用 PowerShell 向应用分配 API 权限

可以向应用程序分配委派权限或应用程序权限。

$delegatedPermission = 'User.Read.All'
$graphApiId = '00000003-0000-0000-c000-000000000000'
$servicePrincipal = Get-EntraServicePrincipal -Filter "DisplayName eq '$appName'"
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "AppId eq '$graphApiId'"

# Grant OAuth2 permission
New-EntraOauth2PermissionGrant -ClientId $servicePrincipal.Id -ConsentType 'AllPrincipals' -ResourceId $graphServicePrincipal.Id -Scope $delegatedPermission

Resources

下载并运行完整的脚本:

在Microsoft Entra 管理中心中创建应用程序

若要使用 Microsoft Entra PowerShell 创建自定义应用程序以连接到Microsoft Entra ID,请按照以下部分中的步骤操作。 使用自定义应用程序隔离和限制为Microsoft Entra资源授予的权限。

  1. 至少以 云应用程序管理员 身份登录到 Microsoft Entra 管理中心
  2. 浏览到标识>应用程序>应用注册,然后选择“新建注册”。
  3. 输入应用程序的名称,例如 Entra PowerShell Five
  4. 对于 支持的帐户类型,请选择 此组织目录中的帐户
  5. 对于重定向 URI,选择:- 从下拉列表中选择“公共客户端/本机” - URI 值http://localhost
  6. 选择注册

注释

在应用的 “概述 ”部分中,复制应用程序(客户端 ID)和目录(租户)ID。 连接到Microsoft Entra ID时,可以使用这些值。

在 Microsoft Entra 管理中心启用“需要分配”功能

若要管理应用程序在租户中访问的资源,请在 “企业应用程序 ”窗格中找到应用程序的服务主体。

  1. 浏览到 标识>应用程序>企业应用程序>所有应用程序,然后选择你创建的应用程序。
  2. “管理”下,选择“属性”,并将“需要分配吗?”设置为“是”
  3. 选择“保存”

在Microsoft Entra 管理中心中分配用户和组

  1. 在“管理”下,选择“用户和组”。
  2. 选择 “添加用户/组 ”,并添加允许使用此应用程序的用户和组。
  3. 添加所有用户和组后,选择“ 分配”。

在Microsoft Entra 管理中心中向应用分配 API 权限

需要为新应用程序设置Microsoft Graph权限才能连接到Microsoft Entra ID和管理Microsoft Entra资源。

  1. 导航到 标识>应用>应用注册>所有应用程序,然后选择你创建的应用程序。
  2. API 权限下,选择添加权限>,然后选择 Microsoft API > Microsoft Graph。
  3. 选择所需的权限类型,委派权限或应用程序权限。
    • 如果需要登录到应用来管理Microsoft Entra ID中的资源,请选择“委派权限”。
    • 如果希望应用在没有用户交互的情况下自行访问Microsoft Entra资源,请选择“应用程序权限
  4. 查找所需的权限,例如 User.Read.All
  5. 选择 为 TenantName 授予管理员同意。 选择 “是”。 确保状态显示绿色对勾。

使用新应用登录

现在,可以通过连接以下项来使用新创建的应用:

Connect-Entra -ClientId <Your_APPLICATION_Id_Here> -TenantId <Your_TENANT_Id_Here>

有关更多连接选项,请参阅 Connect-Entra 命令详细信息。