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

Javascript Adal.js-属于不同租户/应用程序的多个用户帐户,javascript,angularjs,azure-active-directory,adal,adal.js,Javascript,Angularjs,Azure Active Directory,Adal,Adal.js,在我们当前的SPA中,我们在不同的租户中为开发、测试、uat等设置了相同的用户设置。 e、 g用户john doe将拥有以下a/C jdoe@dev.onmicrosoft.com jdoe@test.onmicrosoft.com jdoe@uat.onmicrosoft.com 我们在AAD中分别注册了开发、测试和uat的应用程序。 问题发生在jdoe@dev.onmicrosoft.com登录到dev 站点有一个缓存的uat令牌,然后尝试说“身份验证” uat或测试现场。我们最终得到以下

在我们当前的SPA中,我们在不同的租户中为开发、测试、uat等设置了相同的用户设置。 e、 g用户john doe将拥有以下a/C

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

附加技术信息:相关ID:xxxxxxx-fab9-4c08-a96f-A0C20GSGS时间戳:2015-12-06 17:14:34Z AADSTS50020:用户帐户'jdoe@uat.onmicrosoft.com应用程序“xxxxxxxx(uat ortest)”不支持“来自外部身份提供程序”。该帐户需要作为外部用户添加到租户中。请注销并使用Azure Active Directory用户帐户再次登录

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

我试着使用

clearCache()

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


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

假设您的环境都有不同的域,令牌缓存应该不会有问题,因为每个域都有自己的域。如果跨环境重用同一个域,那么也需要清理令牌。 这里的主要问题是会话cookie,它跟踪用户在Azure AD中的登录状态。如果您不想进行显式注销,唯一的替代方法是在sing-in请求中插入一些参数,向Azure AD发出信号,表示您希望用户有选择权,而不是尝试单一登录-类似于prompt=select\u account。但是,这将要求您在JS调用级别上删除,因为角度级别的扩展点(extraqueryparameter init属性)将添加到每个请求中,包括那些必须保持静默的请求(如令牌更新),这使得API调用不可能。概述:切换环境时请注销,或者使用JS级别的函数执行登录,并注入promp=select\u帐户。其他技巧包括使用inprivate、匿名、多浏览器等