首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >multiple_matching_tokens_detected与ADAL

multiple_matching_tokens_detected与ADAL
EN

Stack Overflow用户
提问于 2015-08-13 23:42:45
回答 3查看 6.4K关注 0票数 7

我有一个使用Azure访问令牌的服务,我们使用ADAL检索它。我们有几百个客户,但出于某种原因,当我们试图为他们检索一个AuthenticationResult时,有两个客户偶然地产生了这个错误:

multiple_matching_tokens_detected:缓存包含满足需求的多个令牌。再次调用AcquireToken提供更多的需求(例如UserId)。

我不知道为什么只有这两个人中的数百人有这个问题,真的找不到太多关于它的网络。获取令牌的代码如下(简化):

代码语言:javascript
复制
AuthenticationContext authContext = new AuthenticationContext(authority, new MyCustomTokenCache());
ClientCredential credential = new ClientCredential(myClientId, myPassword);
authContext.AcquireTokenSilent(resourceUri, credential, UserIdentifier.AnyUser); 

为什么会出现这个错误,解决这个错误的“建议”解决方案是什么?我一直倾向于尝试通过获取这样的标记来修复它,但是我真的想知道错误到底是关于什么的:

代码语言:javascript
复制
authContext.AcquireTokenSilent(mr.ResourceUri, credential, new UserIdentifier("usersUPN@foo.com", UserIdentifierType.UniqueId));
EN

回答 3

Stack Overflow用户

发布于 2018-08-15 12:46:50

如果这仍然相关,我发现multiple_matching_tokens_detected错误也有类似的问题,我发现:

https://developercommunity.visualstudio.com/content/problem/17315/cant-add-new-account-with-vsts-online-failed-to-re.html

正如Alex在回答中提到的(您需要在客户端计算机上这样做):

  1. 关闭所有Visual实例(在您的示例中-关闭我认为的所有客户端应用程序)。
  2. 删除%LOCALAPPDATA%.IdentityService。
  3. 好好享受吧。

像魔法一样为我工作

票数 5
EN

Stack Overflow用户

发布于 2015-08-13 23:59:27

这个错误通常是准确的,就像它实际上报告的那样,对于相同的权限/资源/客户端组合,对于不同的用户有多个令牌。有许多可能的原因,您可能会得到这样的令牌,实际上,在某些情况下,它是完全合法的(例如,一个邮件应用程序支持多个用户同时使用多个邮箱)。在你的具体情况下,我可以想到两个可能的罪魁祸首。其中之一是,MyCustomTokenCache可能不会强制web会话之间的隔离,最终会从不同的调用方汇集令牌。另一种可能是,这两个用户可能已经重新分配了他们的UPN,现在您可以使用旧的和新的UPN拥有多个缓存条目。我建议检查缓存,寻找这样的副本,如果它们在那里,相应地清理。

票数 2
EN

Stack Overflow用户

发布于 2020-09-02 07:21:17

解决方案是捕获错误消息,如果错误为multiple_matching_tokens_detected,则运行AuthenticationContext.TokenCache.Clear();并要求客户重复登录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32000185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档