禁用应用程序的用户登录

在配置或管理应用程序时,可能在某些情况下,你不希望为应用程序颁发令牌。 或者,你可能希望阻止不希望员工尝试访问的应用程序。 若要阻止用户访问某个应用程序,可以禁用应用程序的用户登录,这将阻止为该应用程序颁发所有令牌。

本文介绍如何通过 Microsoft Entra 管理中心和 PowerShell 阻止用户登录到 Microsoft Entra ID 中的应用程序。 如果要了解如何阻止特定用户访问应用程序,请使用用户或组分配

先决条件

若要禁用用户登录,你需要:

  • 一个 Microsoft Entra 用户帐户。 如果还没有帐户,可创建一个帐户
  • 以下角色之一:全局管理员、云应用程序管理员、应用程序管理员或服务主体的所有者。

使用 Microsoft Entra 管理中心禁用用户登录

提示

本文中的步骤可能因开始使用的门户而略有不同。

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。
  3. 搜索你要禁止用户登录的应用程序,然后选择该应用程序。
  4. 选择“属性”。
  5. 对于“是否允许用户登录?”,选择“否”。
  6. 选择“保存”。

使用 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 -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 } 

后续步骤