azure - 使用应用程序密码获取 AD 用户列表的方法
问题描述
在一个应用程序中,我目前正在使用 PowerShell 和 MSOnline 模块(Connect-MsolService 和 Get-MsolUser)来获取 AD 用户列表。全局管理员提供他的用户名和密码,应用程序能够获取该租户下所有用户的列表。
这很好......只要密码不是应用程序密码。使用应用程序密码时,全局管理员可以看到以下内容:
Authentication Error: Bad username or password
我的问题是:有没有其他方法可以使用 PowerShell,但不是必须,来获取 AD 中的用户列表,但可以使用应用程序密码?我知道 Graph API,但这不适合现在的项目。
解决方案
如果我理解正确,您想使用 AD 应用程序及其密码(秘密)来列出用户。
您可以使用Az
powershell 模块来执行此操作,使用服务主体登录并通过Get-AzADUser
. 此外,请确保您的 AD 应用程序(服务主体)具有管理员角色,例如User administrator
或Global 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 质询。
推荐阅读
- javascript - react redux re-render 不是由 state-change 触发的
- android - 作业完成后未清除 WorkManager WorkName 表
- amazon-web-services - 无法通过 aws cli 创建 ECS 容量提供程序
- reactjs - LocalForage.clear() 没有清除我的网络数据库
- javascript - 侦听 messageReactionRemove 以了解对旧消息的旧反应 - Discord.JS
- node.js - Nodejs 'fs' 方法异步运行
- asp.net - .net core 3.1 通过 URL 进行本地化/文化 - localhost/en/area?/controller/action
- github - 如何在 Mac 上恢复被 Github 覆盖的文件夹
- bootstrap-4 - ngb 模态滚动到页面顶部
- node.js - Heroku 上的节点应用程序 - 出现“应用程序错误”