Adal 向不同的授权机构进行身份验证

Adal authenticate to a different authority

我正在编写一个基本上(简单地说)列出登录用户的 azure 订阅的脚本。我首先对“https://login.windows.net/common/oauth2/authorize" using adal. From there, I get a list of the tenants this user is a member of by hitting https://management.azure.com/tenants 进行身份验证。这工作正常。然后我需要登录到每个租户以列出其中的订阅。

我的问题:有没有办法使用 adal 来表示 "I'm already logged in to login.windows.net, please automatically log me in to tenant xyz"?或者我是否需要为用户所属的每个租户显式调用 acquiretoken(使用与第一次调用 login.windows.net 相同的凭据)?

事实并非如此。您没有登录 "login.windows.net",因为不存在这样的权限...您登录的是您第一次用于身份验证的帐户的主租户。现在,这样的帐户可能作为客人出现在您拥有的其他租户中......这就是为什么有一些方法可以为其他租户获取令牌而无需 re-enter 凭据。但这并不意味着您已登录 "login.windows.net",这是一个重要的误解,可能会使您在设计中进一步误入歧途。 就是说。目前,为不同的租户获取令牌而不再次提示输入信用的主要方法是使用 PormptBehavior.Never 调用 acquiretoken - 这将在幕后获取您的登录 cookie 并在无需用户交互的情况下让您登录。此技巧仅在 cookie 仍然存在时有效,这意味着您必须在执行第一次身份验证后执行此操作。