【问题标题】:Adal.js - multiple user accounts belonging to different tenants/applicationsAdal.js - 属于不同租户/应用程序的多个用户帐户
【发布时间】:2015-12-08 11:54:19
【问题描述】:

在我们当前的 SPA 中,我们在不同的租户中为 dev、test、uat 等设置了相同的用户设置。 例如,用户 john doe 将具有以下 a/cs。

jdoe@dev.onmicrosoft.com
jdoe@test.onmicrosoft.com
jdoe@uat.onmicrosoft.com

我们在 AAD 中为 dev、test 和 uat 注册了单独的应用程序。 当 jdoe@dev.onmicrosoft.com 登录到 dev 时出现问题 站点有一个缓存的 uat 令牌,然后尝试说身份验证 uat 或测试站点。我们最终得到以下错误。

其他技术信息:相关 ID:xxxxxxx-fab9-4c08-a96f-a0c20gsgsgsgs 时间戳:2015-12-06 17:14:34Z AADSTS50020:来自外部身份的用户帐户“jdoe@uat.onmicrosoft.com”应用程序“xxxxxxxx(uat ortest)”不支持提供程序“https://sts.windows.net/xxxxxxxxx/”。该帐户需要添加为租户中的外部用户。请退出并使用 Azure Active Directory 用户帐户重新登录。

当用户尝试登录到 test/uat 站点时,我想强制任何现有的缓存令牌并强制用户重新登录并获取 fesh 令牌。

我尝试过使用

clearCache()

但这并没有奏效。我想避免在登录前进行注销调用。

我正在使用 adal.js v1.7。

【问题讨论】:

    标签: javascript angularjs azure-active-directory adal adal.js


    【解决方案1】:

    假设您的环境都有不同的域,令牌缓存应该不是问题 - 因为每个域都有自己的。如果您跨环境重用相同的域,那么您也需要清理令牌。 您在这里遇到的主要问题是会话 cookie,它跟踪用户的状态 与 Azure AD 中的歌曲。如果您不想进行显式注销,唯一的选择是在 sing in 请求中注入一些参数,该参数向 Azure AD 发出信号,表明您希望用户可以选择而不是尝试单点登录 - 例如 prompt=select_account。但是,这将要求您放弃 JS 调用级别,因为角度级别的可扩展点(extraqueryparameter init 属性)将添加到每个请求中,包括必须保持静默的请求,例如令牌更新,从而使 API 调用变得不可能。回顾:切换环境时请退出,或使用 JS 级别函数执行登录并注入 promp=select_account。其他技巧包括使用私密、隐身、多个浏览器等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-03
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 2021-06-14
      相关资源
      最近更新 更多