管理使用者和群組指派給應用程式
本文說明如何使用PowerShell,將使用者和群組指派給 Microsoft Entra ID 中的企業應用程式。 當您將使用者指派給應用程式時,應用程式會出現在使用者的 我的應用程式 入口網站中,以便輕鬆存取。 如果應用程式公開應用程式角色,您也可以將特定應用程式角色指派給使用者。
當您將群組指派給應用程式時,只有群組中的使用者具有存取權。 指派不會串連至巢狀群組。
群組型指派需要 Microsoft Entra ID P1 或 P2 版本。 安全組、Microsoft 365 群組和通訊群組支援群組型指派,其 SecurityEnabled
設定設定為僅設定為 True
。 目前不支援巢狀群組成員資格。 如需本文所討論功能的詳細資訊授權需求,請參閱 Microsoft Entra 定價頁面。
若要獲得更大的控制,可以將特定類型的企業應用程式設定為需要使用者指派。 如需要求應用程式使用者指派的詳細資訊,請參閱 管理應用程式的存取權。
必要條件
若要將使用者指派給企業應用程式,您需要:
- 具有使用中訂用帳戶的 Microsoft Entra 帳戶。 如果您還沒有帳戶,您可以 免費建立帳戶。
- 下列其中一個角色:雲端應用程式 管理員 istrator、Application 管理員 istrator 或服務主體的擁有者。
- 適用於群組型指派的 Microsoft Entra ID P1 或 P2。 如需本文所討論功能的詳細資訊授權需求,請參閱 Microsoft Entra 定價頁面。
提示
本文中的步驟可能會根據您從開始的入口網站稍有不同。
使用 Microsoft Entra 系統管理中心將使用者和群組指派給應用程式
若要將使用者或組帳戶指派給企業應用程式:
以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
流覽至 [身分>識別應用程式>企業應用程式>] [所有應用程式]。
在搜尋方塊中輸入現有應用程式的名稱,然後從搜尋結果中選取應用程式。
選取 [ 使用者和群組],然後選取 [ 新增使用者/群組]。
在 [新增指派] 窗格中,選取 [使用者和群組] 底下的 [無選取]。
搜尋並選取您要指派給應用程式的使用者或群組。 例如,
contosouser1@contoso.com
或contosoteam1@contoso.com
。選取選取。
在 [選取角色] 下,選取您要指派給使用者或群組的角色。 如果您尚未定義任何角色,預設角色為 預設存取。
在 [ 新增指派 ] 窗格中,選取 [ 指派 ] 將使用者或群組指派給應用程式。
從應用程式取消指派使用者和群組
- 遵循將使用者和群組指派給應用程式區段上的步驟,流覽至 [使用者和群組] 窗格。
- 搜尋並選取您想要從應用程式取消指派的使用者或群組。
- 選取 [移除 ] 從應用程式取消指派使用者或群組。
使用 Azure AD PowerShell 將使用者和群組指派給應用程式
開啟提高權限的 Windows PowerShell 命令提示字元。
至少
Connect-AzureAD
以雲端應用程式 管理員 istrator 身分執行並登入。使用下列文稿將使用者和角色指派給應用程式:
# Assign the values to the variables $username = "<Your user's UPN>" $app_name = "<Your App's display name>" $app_role_name = "<App role display name>" # Get the user to assign, and the service principal for the app to assign to $user = Get-AzureADUser -ObjectId "$username" $sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'" $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name } # Assign the user to the app role New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
若要將群組指派給企業應用程式,您必須將 取代Get-AzureADUser
為 ,並以 取代 New-AzureADUserAppRoleAssignment
New-AzureADGroupAppRoleAssignment
Get-AzureADGroup
。
如需如何將群組指派給應用程式角色的詳細資訊,請參閱 New-AzureADGroupAppRoleAssignment 的檔。
範例
此範例會使用PowerShell將使用者 Britta Simon 指派給 Microsoft Workplace Analytics 應用程式。
在 PowerShell 中,將對應的值指派給變數 $username、$app_name 和 $app_role_name。
# Assign the values to the variables $username = "britta.simon@contoso.com" $app_name = "Workplace Analytics"
在此範例中,我們不知道我們想要指派給 Britta Simon 的應用程式角色確切名稱。 執行下列命令,以使用使用者UPN和服務主體顯示名稱來取得使用者 ($user) 和服務主體 ($sp)。
# Get the user to assign, and the service principal for the app to assign to $user = Get-AzureADUser -ObjectId "$username" $sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
執行 命令
$sp.AppRoles
以顯示工作場所分析應用程式可用的角色。 在此範例中,我們想要將 Britta Simon 指派給分析師 (有限存取) 角色。將角色名稱指派給
$app_role_name
變數。# Assign the values to the variables $app_role_name = "Analyst (Limited access)" $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
執行下列命令,將使用者指派給應用程式角色:
# Assign the user to the app role New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
使用 Azure AD PowerShell 從應用程式取消指派使用者和群組
開啟提高權限的 Windows PowerShell 命令提示字元。
至少
Connect-AzureAD
以雲端應用程式 管理員 istrator 身分執行並登入。使用下列腳本從應用程式移除使用者和角色。
# Store the proper parameters $user = get-azureaduser -ObjectId <objectId> $spo = Get-AzureADServicePrincipal -ObjectId <objectId> #Get the ID of role assignment $assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $spo.ObjectId | Where {$_.PrincipalDisplayName -eq $user.DisplayName} #if you run the following, it will show you what is assigned what $assignments | Select * #To remove the App role assignment run the following command. Remove-AzureADServiceAppRoleAssignment -ObjectId $spo.ObjectId -AppRoleAssignmentId $assignments[assignment number].ObjectId
使用 Azure AD PowerShell 移除指派給應用程式的所有使用者
使用下列腳本來移除指派給應用程式的所有使用者和群組。
#Retrieve the service principal object ID.
$app_name = "<Your App's display name>"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$sp.ObjectId
# Get Service Principal using objectId
$sp = Get-AzureADServicePrincipal -ObjectId "<ServicePrincipal objectID>"
# Get Azure AD App role assignments using objectId of the Service Principal
$assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -All $true
# Remove all users and groups assigned to the application
$assignments | ForEach-Object {
if ($_.PrincipalType -eq "User") {
Remove-AzureADUserAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
} elseif ($_.PrincipalType -eq "Group") {
Remove-AzureADGroupAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
}
}
使用 Microsoft Graph PowerShell 將使用者和群組指派給應用程式
- 開啟提高權限的 Windows PowerShell 命令提示字元。
- 至少
Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
執行並登入雲端應用程式 管理員 istrator。 - 使用下列文稿將使用者和角色指派給應用程式:
# Assign the values to the variables
$userId = "<Your user's ID>"
$app_name = "<Your App's display name>"
$app_role_name = "<App role display name>"
$sp = Get-MgServicePrincipal -Filter "displayName eq '$app_name'"
# Get the user to assign, and the service principal for the app to assign to
$params = @{
"PrincipalId" =$userId
"ResourceId" =$sp.Id
"AppRoleId" =($sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }).Id
}
# Assign the user to the app role
New-MgUserAppRoleAssignment -UserId $userId -BodyParameter $params |
Format-List Id, AppRoleId, CreationTime, PrincipalDisplayName,
PrincipalId, PrincipalType, ResourceDisplayName, ResourceId
使用 Microsoft Graph PowerShell 從應用程式取消指派使用者和群組
- 開啟提高權限的 Windows PowerShell 命令提示字元。
- 至少
Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
執行並登入雲端應用程式 管理員 istrator。 使用下列腳本從應用程式移除使用者和角色。
# Get the user and the service principal
$user = Get-MgUser -UserId <userid>
$spo = Get-MgServicePrincipal -ServicePrincipalId <ServicePrincipalId>
# Get the Id of the role assignment
$assignments = Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $spo.Id | Where {$_.PrincipalDisplayName -eq $user.DisplayName}
# if you run the following, it will show you the list of users assigned to the application
$assignments | Select *
# To remove the App role assignment run the following command.
Remove-MgServicePrincipalAppRoleAssignedTo -AppRoleAssignmentId '<AppRoleAssignment-id>' -ServicePrincipalId $spo.Id
使用 Microsoft Graph PowerShell 移除指派給應用程式的所有使用者和群組
使用下列腳本來移除指派給應用程式的所有使用者和群組。
$assignments | ForEach-Object {
if ($_.PrincipalType -in ("user", "Group")) {
Remove-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $Sp.Id -AppRoleAssignmentId $_.Id }
}
使用 Microsoft Graph API 將使用者和群組指派給應用程式
若要將使用者和群組指派給應用程式,請至少以 Cloud Application 管理員 istrator 身分登入 Graph 總管。
您必須同意下列權限:
Application.ReadWrite.All
、、Directory.ReadWrite.All
AppRoleAssignment.ReadWrite.All
。若要授與應用程式角色指派,您需要三個標識碼:
principalId
:您要指派應用程式角色的使用者或群組標識符。resourceId
:定義應用程式角色的資源服務Principal標識符。appRoleId
:要指派給使用者或群組之 appRole 的標識碼(定義在資源服務主體上)。
取得企業應用程式。 依 DisplayName 篩選。
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq '{appDisplayName}'
從回應本文記錄下列值:
- 企業應用程式的物件識別碼
- 您指派給使用者的 appRoleId。 如果應用程式未公開任何角色,則會將使用者指派為預設存取角色。
藉由依用戶主體名稱進行篩選來取得使用者。 記錄使用者的物件識別碼。
GET https://graph.microsoft.com/v1.0/users/{userPrincipalName}
將使用者指派給應用程式。
POST https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo { "principalId": "33ad69f9-da99-4bed-acd0-3f24235cb296", "resourceId": "9028d19c-26a9-4809-8e3f-20ff73e2d75e", "appRoleId": "ef7437e6-4f94-4a0a-a110-a439eb2aa8f7" }
在此範例中,resource-servicePrincipal-id 和 resourceId 都代表企業應用程式。
使用 Microsoft Graph API 從應用程式取消指派使用者和群組
若要從應用程式取消指派使用者和群組,請執行下列查詢。
取得企業應用程式。 依 displayName 進行篩選。
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq '{appDisplayName}'
取得應用程式的 appRoleAssignments 清單。
GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
藉由指定 appRoleAssignment 識別符來移除 appRoleAssignments。
DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}