如何以编程方式检索给定订阅中 Azure Active Directory 的域名?

How can I programmatically retrieve the domain name of the Azure Active Directory in a given subscription?

我正在开发一个应用程序,它允许用户对 Azure Active Directory 进行身份验证,然后通过 Azure 资源管理器 API 调用管理其 Azure 帐户中的资源。

我发现了几个构建此类应用程序的演练,包括这个 post。但是,在讨论使用 Azure Active Directory 进行身份验证的部分中,有一个步骤显示需要从 Azure 门户手动检索 Azure Active Directory 名称。

目录名称插入到应用程序设置(以及最终对目录的身份验证调用)中,如下所示

http://login.microsoftonline.com/{directory_domain_name}/OAuth2/Authorize

是否可以通过编程方式检索 {directory_domain_name} 而无需用户登录并在 Azure 门户中查找信息?

this question的一个答案死了link,另一个指向Graph API,似乎还需要域名。

对于您的特定场景,看起来您想要构建一个应用程序,该应用程序将成为来自不同 Azure AD 租户的用户。这种情况最好通过构建多租户应用程序来解决。

要使您的应用程序成为多租户,您需要转到 Azure 门户并在 Azure AD 应用程序的配置选项卡中,将 "Application is Mult-Tenant" 选项设置为是。

完成此操作后,您只需调用

http://login.microsoftonline.com/common/oauth/authorize
http://login.microsoftonline.com/common/oauth/token

并且 Azure AD 将根据用户输入的凭据来确定要针对哪个租户进行身份验证。

关于多租户应用程序的更多信息:https://azure.microsoft.com/en-us/documentation/articles/guidance-multitenant-identity-authenticate/

示例多租户应用程序:https://github.com/Azure-Samples/active-directory-dotnet-webapp-multitenant-openidconnect