如何使用 /common 端点上的 user_impersonation 范围生成的令牌获取所有 Azure AD 帐户列表
Posted
技术标签:
【中文标题】如何使用 /common 端点上的 user_impersonation 范围生成的令牌获取所有 Azure AD 帐户列表【英文标题】:How to get all Azure AD account list using token generated by user_impersonation scope on /common endpoint 【发布时间】:2020-05-02 05:08:24 【问题描述】:由于 Azure AD 身份验证文档定义了使用 /common 端点获取令牌的方法,如下所示。
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow
我能够获取 access_token(使用 /common 端点),但现在我正在寻找 API 或获取租户/帐户明智令牌以访问各个租户的订阅的方法
我看到微软正在为 Azure Rest API 测试做这件事。您可以点击“试用”按钮,登录后您将拥有您所属的所有 Azure AD 帐户和令牌租户(您可以在浏览器控制台中查看 /accesstoken 端点)
https://docs.microsoft.com/en-us/rest/api/resources/subscriptions/list#code-try-0
我怎样才能实现与下面的截图相同。
注意:我没有用户租户列表,通过它我可以明智地获取租户 访问令牌
【问题讨论】:
【参考方案1】:有一个 REST API 可以获取用户所属的租户 (Azure AD) 列表。您可以在此处找到有关此 API 的详细信息:https://docs.microsoft.com/en-us/rest/api/resources/tenants/list。
【讨论】:
感谢您的回复,我知道这一点,但我正在寻找的是生成租户明智的令牌以访问各个租户的订阅。注意:整个过程需要通过 AD 登录流程使用login.microsoftonline.com/common/oauth2/authorize 端点进行初始化。我面临的主要问题与用户使用login.microsoftonline.com/common/oauth2/authorize 端点登录后获取租户明智令牌有关。 您可以在此 URL docs.microsoft.com/en-us/rest/api/resources/subscriptions/… 上查看 Microsoft 如何为其自己的门户(在浏览器控制台中查看)执行此操作。他们在用户登录后调用此端点,这将返回给他们一个租户明智的令牌,我想实现相同的token.docs.microsoft.com/accesstokens【参考方案2】:您可以在获取访问令牌时通过传递特定租户 ID 来获取租户明智的订阅列表。
var accessToken =
await tokenAcquisition.GetAccessTokenForUserAsync(new[] $"ArmApiOperationService.ArmResourceuser_impersonation" , tenantid);
但是当从“https://token.docs.microsoft.com/accesstokens”请求时,ms doc 使用了另一种方法“.TokenAuthCookies”cookie 标头。当我们使用 open id 签名时,我们已经生成了 tokencookie。你已经找到方法了吗?
【讨论】:
@PradipB 我在此处github.com/Azure-Samples/… 上提出了关于官方 azure 示例 GitHub 存储库的问题。如果您找到任何获取“.TokenAuthCookies”cookie 的解决方案,请在此处提及以上是关于如何使用 /common 端点上的 user_impersonation 范围生成的令牌获取所有 Azure AD 帐户列表的主要内容,如果未能解决你的问题,请参考以下文章
我网站上的“成为客户”按钮要求 POST 客户端点是公开的。我不想公开。我该如何解决这个问题?