管理使用者和群組的應用程式指派
本文說明如何在 Microsoft Entra 識別符中,將使用者和群組指派給企業應用程式。 當您將使用者指派給應用程式時,應用程式會顯示在使用者的我的應用程式入口網站中以便存取。 如果應用程式公開應用程式角色,您也可以將特定應用程式角色指派給使用者。
當您將群組指派給應用程式時,只有群組中的使用者才有存取權。 指派不會套用到巢狀群組。
群組型指派需要 Microsoft Entra ID P1 或 P2 版本。 只有安全性群組、Microsoft 365 群組,以及 SecurityEnabled
設定設定為 True
的通訊群組才支援群組型指派。 目前不支援巢狀群組成員資格。 如需本文所討論功能的詳細授權需求,請參閱 Microsoft Entra 定價頁面。
若要進行更好的控制,可將特定類型的企業應用程式設為需要使用者指派。 若要了解有關需要應用程式使用者指派的詳細資訊,請參閱<管理應用程式的存取權>(機器翻譯)。 要求將使用者指派給應用程式的這類應用程式,必須經過系統管理員的許可權同意,縱使目錄的使用者同意原則會允許使用者自行同意。
注意
如果您在透過入口網站管理群組時遇到限制,例如使用應用程式存取原則群組,請考慮使用替代方法,例如 PowerShell 或 Microsoft Graph API。
必要條件
若要將使用者指派給企業應用程式,您需要:
- 具有有效訂用帳戶的 Microsoft Entra 帳戶。 若尚未有帳戶,可以免費建立帳戶。
- 下列其中一個角色:
- 雲端應用程式管理員
- 應用程式管理員
- 使用者管理員
- 服務主體的擁有者。
- 適用於群組型指派的 Microsoft Entra ID P1 或 P2。 如需本文所討論功能的詳細授權需求,請參閱 Microsoft Entra 定價頁面。
使用 Microsoft Entra 系統管理中心將使用者和群組指派給應用程式
若要將使用者或群組帳戶指派給企業應用程式:
以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
瀏覽至 身分識別>應用程式>企業應用程式>所有應用程式。
在搜尋方塊中輸入現有應用程式的名稱,然後從搜尋結果中選取應用程式。
選取 [使用者和群組],然後選取 [新增使用者/群組]。
在 [新增指派]
窗格中,於 [使用者和群組] 下選取 [無選擇] 。 搜尋並選取您要指派給應用程式的使用者或群組。 例如,
contosouser1@contoso.com
或contosoteam1@contoso.com
。選取選取。
在 [選取角色] 底下,選取您要指派給使用者或群組的角色。 如果您尚未定義任何角色,則預設角色為 [預設存取]。
在 [新增指派] 窗格上,選取 [指派],將使用者或群組指派給應用程式。
從應用程式取消指派使用者和群組
- 請遵循將使用者和群組指派給應用程式一節中的步驟,瀏覽至 [使用者和群組] 窗格。
- 搜尋並選取您要從應用程式取消指派的使用者或群組。
- 選擇 [移除],從應用程式取消指派使用者或群組。
使用 Microsoft Entra PowerShell 將使用者和群組指派給應用程式
至少以 雲端應用程式管理員登入。
使用下列文稿將使用者指派給應用程式:
connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" # 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-EntraUser -ObjectId "$username" $sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'" $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name } # Assign the user to the app role New-EntraUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
範例
此範例會使用 PowerShell 將使用者 Britta Simon 指派給 Microsoft 工作場所分析應用程式。
在 PowerShell 中,將對應的值指派給變數
$username
、$app_name
和$app_role_name
。connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" $username = "britta.simon@contoso.com" $app_name = "Workplace Analytics"
在此範例中,我們不清楚要指派給 Britta Simon 的應用程式角色是什麼名稱。 執行下列命令,以根據使用者 UPN 和服務主體的顯示名稱來取得使用者(
$user
)和服務主體($sp
)。$user = Get-EntraUser -ObjectId "$username" $sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"
執行下列命令來尋找服務主體公開的應用程式角色
$appRoles = $sp.AppRoles # Display the app roles $appRoles | ForEach-Object { Write-Output "AppRole: $($_.DisplayName) - ID: $($_.Id)" }
注意
預設的 AppRole 識別子為
00000000-0000-0000-0000-000000000000
。 當服務主體未定義特定的AppRole時,會指派此角色。將 AppRole 名稱指派給
$app_role_name
變數。 在此範例中,我們要指派「分析師」(有限存取權) 角色給 Britta Simon。$app_role_name = "Analyst (Limited access)" $appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
執行下列命令,將使用者指派給應用程式角色。
New-EntraUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $sp.ObjectId -Id $appRole.Id
若要將群組指派給企業應用程式,請將 Get-EntraUser
替換為 Get-EntraGroup
,並將 New-EntraUserAppRoleAssignment
替換為 New-EntraGroupAppRoleAssignment
。
如需如何將群組指派給應用程式角色的詳細資訊,請參閱 New-EntraGroupAppRoleAssignment的檔。
使用 Microsoft Entra PowerShell 從應用程式取消指派使用者和群組
開啟提高權限的 Windows PowerShell 命令提示字元。
至少以 雲端應用程式管理員登入。
您可以使用下列指令碼,將使用者和角色從應用程式移除。
connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" # Store the proper parameters $user = Get-Entrauser -ObjectId "<objectId>" $spo = Get-EntraServicePrincipal -ObjectId "<objectId>" #Get the ID of role assignment $assignments = Get-EntraServicePrincipalAppRoleAssignedTo -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-EntraServicePrincipalAppRoleAssignment -ObjectId $spo.ObjectId -AppRoleAssignmentId $assignments.ObjectId
使用 Microsoft Entra PowerShell 移除指派給應用程式的所有使用者
- 開啟提高權限的 Windows PowerShell 命令列介面。
使用下列指令碼來移除指派給應用程式的所有使用者和群組。
connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
#Retrieve the service principal object ID.
$app_name = "<Your App's display name>"
$sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"
# Get Microsoft Entra App role assignments using objectId of the Service Principal
$assignments = Get-EntraServicePrincipalAppRoleAssignedTo -ObjectId $sp.ObjectId -All
# Remove all users and groups assigned to the application
$assignments | ForEach-Object {
if ($_.PrincipalType -eq "User") {
Remove-EntraUserAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
} elseif ($_.PrincipalType -eq "Group") {
Remove-EntraGroupAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
}
}
使用 Microsoft Graph PowerShell 將使用者和群組指派給應用程式
開啟提高權限的 Windows PowerShell 命令提示字元。
執行
Connect-MgGraph -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
,並以至少為雲端應用程式管理員的身分登入。使用下列文稿將使用者指派給應用程式:
#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, the service principal and appRole. $params = @{ "PrincipalId" =$userId "ResourceId" =$sp.Id "AppRoleId" =($sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }).Id } #Assign the user to the AppRole New-MgUserAppRoleAssignment -UserId $userId -BodyParameter $params | Format-List Id, AppRoleId, CreationTime, PrincipalDisplayName, PrincipalId, PrincipalType, ResourceDisplayName, ResourceId
範例
此範例會使用 Microsoft Graph PowerShell,將使用者 Britta Simon 指派給Microsoft工作場所分析應用程式。
在 PowerShell 中,將對應的值指派給變數
$userId
、$app_name
和$app_role_name
。# Assign the values to the variables $userId = "<Britta Simon's user ID>" $app_name = "Workplace Analytics"
在此範例中,我們不知道我們想要指派給 Britta Simon 的應用程式角色確切名稱。 請執行下列命令,使用服務主體顯示名稱來取得服務主體($sp)。
# Get the service principal for the app $sp = Get-MgServicePrincipal -Filter "displayName eq '$app_name'"
執行下列命令來尋找服務主體所公開的應用程式角色。
# Get the app roles exposed by the service principal $appRoles = $sp.AppRoles # Display the app roles $appRoles | ForEach-Object { Write-Output "AppRole: $($_.DisplayName) - ID: $($_.Id)" }
注意
預設的 AppRole 識別子為
00000000-0000-0000-0000-000000000000
。 當服務主體未定義特定的AppRole時,會指派此角色。指派角色名稱給
$app_role_name
變數。 在此範例中,我們要指派「分析師」(有限存取權) 角色給 Britta Simon。# Assign the values to the variables $app_role_name = "Analyst (Limited access)" $appRoleId = ($sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }).Id
準備參數並執行下列命令,將使用者指派給應用程式角色。
# Prepare parameters for the role assignment $params = @{ "PrincipalId" = $userId "ResourceId" = $sp.Id "AppRoleId" = $appRoleId } # Assign the user to the app role New-MgUserAppRoleAssignment -UserId $userId -BodyParameter $params | Format-List Id, AppRoleId, CreationTime, PrincipalDisplayName, PrincipalId, PrincipalType, ResourceDisplayName, ResourceId
若要將群組指派給企業應用程式,請將 Get-MgUser
替換為 Get-MgGroup
,並將 New-MgUserAppRoleAssignment
替換為 New-MgGroupAppRoleAssignment
。
如需如何將群組指派給應用程式角色的詳細資訊,請參閱 New-MgGroupAppRoleAssignment 的檔。
使用 Microsoft Graph PowerShell 從應用程式將使用者和群組取消指派
開啟提高權限的 Windows PowerShell 命令提示字元。
執行
Connect-MgGraph -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
,並以至少為雲端應用程式管理員的身分登入。獲取使用者和服務主體
$user = Get-MgUser -UserId <userid> $sp = Get-MgServicePrincipal -ServicePrincipalId <ServicePrincipalId>
取得角色指派的識別碼
$assignments = Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $sp.Id | Where {$_.PrincipalDisplayName -eq $user.DisplayName}
執行下列命令以顯示指派給應用程式的用戶清單
$assignments | Select *
執行下列命令以移除 AppRole 指派。
Remove-MgServicePrincipalAppRoleAssignedTo -AppRoleAssignmentId '<AppRoleAssignment-id>' -ServicePrincipalId $sp.Id
使用 Microsoft Graph PowerShell 將指派給應用程式的所有使用者和群組移除
執行下列命令,以移除指派給應用程式的所有使用者和群組。
$assignments | ForEach-Object {
if ($_.PrincipalType -in ("user", "Group")) {
Remove-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $sp.Id -AppRoleAssignmentId $_.Id }
}
使用 Microsoft Graph API 將使用者和群組指派給應用程式
若要將使用者和群組指派給應用程式,請以雲端應用程式管理員以上的身分登入 Graph 總管。
您需要同意下列權限:
Application.ReadWrite.All
和AppRoleAssignment.ReadWrite.All
。若要授與應用程式角色指派,您需要三個識別碼:
-
principalId
:您要指派應用程式角色的目標使用者或群組識別碼。 -
resourceId
:定義應用程式角色的 servicePrincipal 資源識別碼。 -
appRoleId
:指派給使用者或群組的 appRole 的識別碼,這個 appRole 是在資源服務主體上定義的。
-
取得企業應用程式。 依
DisplayName
篩選。GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq '{appDisplayName}'
記錄以下從回應主體中取得的值:
- 企業應用程式的物件識別碼
- 您指派給使用者的 AppRole 識別碼。 如果應用程式未公開任何角色,則會將預設存取角色指派給使用者。
注意
預設的 AppRole 識別子為
00000000-0000-0000-0000-000000000000
。 當服務主體未定義特定的AppRole時,會指派此角色。透過篩選使用者的主體名稱來取得使用者。 記錄使用者的物件識別碼。
GET https://graph.microsoft.com/v1.0/users/{userPrincipalName}
請將使用者指派給應用程式。
POST https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo { "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "resourceId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "appRoleId": "00000000-0000-0000-0000-000000000000" }
在範例中,
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
藉由指定
appRoleAssignments
識別碼來移除appRoleAssignment
。DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
Microsoft Graph Explorer 不支援批次刪除應用程式角色指派。 您必須刪除每個個別指派。 不過,您可以使用Microsoft Graph PowerShell將此過程自動化,以逐一移除每個指派