Adal.js-属于不同租户/应用程序的多个用户帐户

Adal.js - multiple user accounts belonging to different tenants/applications

本文关键字:用户 应用程序 属于 Adal js-      更新时间:2023-09-26

在我们当前的SPA中,我们在不同的租户中有相同的用户设置,用于开发、测试、uat等。例如,用户johndoe将具有以下a/cs。

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

我们在AAD中注册了用于开发、测试和uat的单独应用程序。当jdoe@dev.onmicrosoft.com登录到dev站点有一个uat的缓存令牌,然后尝试说authenticateuat或测试场地。我们最终得到以下错误。

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

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

我试过使用

clearCache()

但这并没有奏效。我想避免在登录之前打注销电话。

我使用的是adal.js v1.7。

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

相关文章: