首页 > 解决方案 > 使用应用程序密码获取 AD 用户列表的方法

问题描述

在一个应用程序中,我目前正在使用 PowerShell 和 MSOnline 模块(Connect-MsolService 和 Get-MsolUser)来获取 AD 用户列表。全局管理员提供他的用户名和密码,应用程序能够获取该租户下所有用户的列表。

这很好......只要密码不是应用程序密码。使用应用程序密码时,全局管理员可以看到以下内容:

Authentication Error: Bad username or password

我的问题是:有没有其他方法可以使用 PowerShell,但不是必须,来获取 AD 中的用户列表,但可以使用应用程序密码?我知道 Graph API,但这不适合现在的项目。

标签: azurepowershellazure-active-directory

解决方案


如果我理解正确,您想使用 AD 应用程序及其密码(秘密)来列出用户。

您可以使用Azpowershell 模块来执行此操作,使用服务主体登录并通过Get-AzADUser. 此外,请确保您的 AD 应用程序(服务主体)具有管理员角色,例如User administratorGlobal administrator

$azureAplicationId ="<AD App Application id>"
$azureTenantId= "<tenant id>"
$azurePassword = ConvertTo-SecureString "<password>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $azureTenantId  -ServicePrincipal

Get-AzADUser 

在此处输入图像描述

更新

目前,不支持使用启用 MFA 的用户的应用密码连接 MSOL powershell,更多详细信息请参见此链接

不支持应用密码,只需使用不带任何参数的 Connect-MsolService 即可触发 ADAL 对话框并正常完成 2FA 质询。


推荐阅读