【发布时间】:2019-01-15 06:46:01
【问题描述】:
有没有办法模仿 powershell 的 Get-AzureADUser 来读取给定用户的 AD 属性,而无需注册我尝试使用 Azure 构建的 C# 控制台应用程序?
我知道您可以在 C# 中运行 powershell,但我想知道是否有其他方法可以在不注册应用的情况下实现相同的目标?
【问题讨论】:
有没有办法模仿 powershell 的 Get-AzureADUser 来读取给定用户的 AD 属性,而无需注册我尝试使用 Azure 构建的 C# 控制台应用程序?
我知道您可以在 C# 中运行 powershell,但我想知道是否有其他方法可以在不注册应用的情况下实现相同的目标?
【问题讨论】:
简短回答:不可以。您需要向 Azure AD 注册一个应用程序才能进行身份验证。
更长的答案:
AFAIK 为 Azure AD 支持的身份验证提供的所有 OAuth 2.0 授权都需要有关用于进行身份验证调用的客户端(即注册的应用程序)的一些信息。无论您是使用 ADAL 库还是直接点击相关的令牌/授权端点,这都是正确的。
您可能已经知道,但值得一提的是,使用正确权限进行身份验证/查询用户数据的最简单且推荐的方法是将您的应用程序注册到 Azure AD。
事实上,Azure AD 的默认设置是这样的,它促进了开发人员能够代表他们自己注册应用程序并同意应用程序的用例。阅读这里..Who has permission to add applications to my Azure AD instance?,最后提到微软自己在内部使用相同的配置。
完全披露:我知道一些知识渊博的人(Microsoft MVP、Microsoft Azure AD 团队成员)使用 azure-active-directory 标签。因此,即使我认为这是正确的答案,但您的问题是,等待更多答案/cmets 看看是否还有其他可能是有意义的。
如果适合您的情况,可能的解决方法:
如果您不想注册您的应用程序只是因为您没有特定 Azure Active Directory 租户的权限,则可能有一种解决方法。
您仍需要使用不同的 Azure AD 租户或 Azure AD B2C 注册您的应用程序,然后将您的应用程序设为多租户。有关详细信息,请参阅this SO post。
【讨论】:
appId:"1b730954-1685-4b74-9bfd-dac224a7b894" 是由 PowerShell 使用。所以我的猜测是,会有一个多租户应用程序注册来代表 PowerShell。我们只是在常规接口/api 中看不到它。更广泛的一点是,所有与 Azure AD 一起用于身份验证和查询信息的东西都应该有一个注册的应用程序。