禁用应用程序的用户登录
在配置或管理应用程序时,可能在某些情况下,你不希望为应用程序颁发令牌。 或者,你可能希望阻止不希望员工尝试访问的应用程序。 若要阻止用户访问某个应用程序,可以禁用应用程序的用户登录,这将阻止为该应用程序颁发所有令牌。
本文介绍如何通过 Microsoft Entra 管理中心和 PowerShell 阻止用户登录到 Microsoft Entra ID 中的应用程序。 如果要了解如何阻止特定用户访问应用程序,请使用用户或组分配。
先决条件
若要禁用用户登录,你需要:
- 一个 Microsoft Entra 用户帐户。 如果还没有帐户,可创建一个帐户。
- 以下角色之一:云应用程序管理员、应用程序管理员或服务主体的所有者。
使用 Microsoft Entra 管理中心禁用用户登录
提示
本文中的步骤可能因开始使用的门户而略有不同。
- 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
- 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。
- 搜索你要禁止用户登录的应用程序,然后选择该应用程序。
- 选择“属性”。
- 对于“是否允许用户登录?”,选择“否”。
- 选择“保存”。
使用 Azure AD PowerShell 禁用用户登录
你可能知道未出现在企业应用列表中的应用的 AppId。 例如,如果你删除了应用,或者尚未创建服务主体(因为 Microsoft 对应用进行了预授权)。 你可以手动为该应用创建服务主体,然后使用以下 Azure AD PowerShell cmdlet 将其禁用。
确保已安装 Azure AD PowerShell 模块(使用命令 Install-Module -Name AzureAD
)。 出现安装 NuGet 模块或新的 Azure AD PowerShell V2 模块的提示时,请键入 Y,然后按 ENTER。 至少需要云应用程序管理员登录。
# Connect to Azure AD PowerShell
Connect-AzureAD -AzureEnvironmentName AzureChinaCloud -Scopes
# The AppId of the app to be disabled
$appId = "{AppId}"
# Check if a service principal already exists for the app
$servicePrincipal = Get-AzureADServicePrincipal -Filter "appId eq '$appId'"
if ($servicePrincipal) {
# Service principal exists already, disable it
Set-AzureADServicePrincipal -ObjectId $servicePrincipal.ObjectId -AccountEnabled $false
} else {
# Service principal does not yet exist, create it and disable it at the same time
$servicePrincipal = New-AzureADServicePrincipal -AppId $appId -AccountEnabled $false
}
使用 Microsoft Graph PowerShell 禁用用户登录
你可能知道未出现在企业应用列表中的应用的 AppId。 例如,如果你删除了应用,或者因应用而尚未创建服务主体(因为 Microsoft 对应用进行了预授权)。 你可以手动为该应用创建服务主体,然后使用以下 Microsoft Graph PowerShell cmdlet 将其禁用。
确保安装 Microsoft Graph 模块(使用命令 Install-Module Microsoft.Graph
)。 至少需要云应用程序管理员登录。
# Connect to Microsoft Graph PowerShell
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Application.ReadWrite.All"
# The AppId of the app to be disabled
$appId = "{AppId}"
# Check if a service principal already exists for the app
$servicePrincipal = Get-MgServicePrincipal -Filter "appId eq '$appId'"
# If Service principal exists already, disable it , else, create it and disable it at the same time
if ($servicePrincipal) { Update-MgServicePrincipal -ServicePrincipalId $servicePrincipal.Id -AccountEnabled:$false }
else { $servicePrincipal = New-MgServicePrincipal -AppId $appId -AccountEnabled:$false }