Azure AD 登录 - 如果缓存帐户对于我的应用程序来说是错误的,如何允许用户更改 Azure 帐户

Jos*_*osh 5 azure oauth-2.0 azure-active-directory openid-connect

基本场景:Azure AD 仅用作 Web 应用程序的身份验证提供程序,从 azure 检索的身份通过电子邮件与本地身份进行匹配,并针对应用程序的 webapi 发出表单身份验证 cookie 以进行 api 授权。

问题:如果用户有多个 Azure 帐户,他们在访问我的应用程序时可能会经过预先身份验证。在这种情况下,当重定向回我的应用程序时,可能没有匹配的用户,并且登录无法完成。

所需的解决方案:如果缓存的 azure 帐户对我的应用程序无效,我想将用户引导回 Microsoft 登录页面,并有机会手动输入其凭据

我如何实现这一目标,这个流程有什么问题吗?目前,用户进入我的应用程序的唯一方法似乎是转到 azure 并注销错误帐户。还有哪些方法可以实现更好的用户体验?我是否应该使用 azure 的身份验证令牌并以编程方式注销用户,然后返回 azure 进行另一次操作?即使用户已经登录,我是否可以提示 azure 提示用户?

Jos*_*osh 5

我发现我确实想要在重定向到 azure 时使用提示 = select_account 标志,但我使用的库很难确定如何设置它。我正在使用 ms-adal-angular6 库,它是 azure-activedirectory-library-for-js 的包装器。

在深入研究代码后,我发现了一个未记录的配置属性,称为 extraQueryParameter,当我设置为“prompt=select_account”时,其行为足以接近所需的行为。

最终,用户每次都必须选择他们的帐户,而不是仅在帐户错误时才选择。我很可能会对错误响应感到棘手,并使用prompt=select_account再次重定向回来以获得我正在寻找的行为,尽管该库也不容易动态更改它,所以我可能会坚持使用它始终开启。