Ste*_*hka 7 c# azure-active-directory adal
我有一项使用 Azure 访问令牌的服务,我们使用 ADAL 检索该令牌。我们有数百个客户,但由于某种原因,当我们尝试AuthenticationResult为他们检索一个时,其中有两个偶尔会产生此错误:
multiple_matching_tokens_detected:缓存中包含多个满足要求的令牌。再次调用 AcquireToken 提供更多要求(例如 UserId)。
我不知道为什么数百人中只有这两个人有这个问题,而且在网上真的找不到太多关于它的信息。我们获取令牌的代码如下(简化):
AuthenticationContext authContext = new AuthenticationContext(authority, new MyCustomTokenCache());
ClientCredential credential = new ClientCredential(myClientId, myPassword);
authContext.AcquireTokenSilent(resourceUri, credential, UserIdentifier.AnyUser);
Run Code Online (Sandbox Code Playgroud)
为什么会发生此错误,解决该错误的“建议”解决方案是什么?我一直倾向于尝试通过获取这样的令牌来修复它,但真的很想知道错误到底是什么:
authContext.AcquireTokenSilent(mr.ResourceUri, credential, new UserIdentifier("usersUPN@foo.com", UserIdentifierType.UniqueId));
Run Code Online (Sandbox Code Playgroud)
如果这仍然相关,我有类似的multiple_matching_tokens_detected错误问题,我发现:
正如亚历克斯在答案中提到的那样(您需要在客户端计算机上执行此操作):
像魔法一样为我工作
小智 2
此错误通常是准确的,如 - 它实际上报告不同用户的相同权限/资源/clientid 组合有多个令牌。您最终可能会得到此类令牌的原因有很多,事实上,在某些情况下它是完全合法的(例如,一个邮件应用程序同时支持多个用户的多个邮箱)。根据您的具体情况,我可以想到两个可能的罪魁祸首。一是 MyCustomTokenCache 可能不会强制 Web 会话之间的隔离,最终会汇集来自不同调用者的令牌。另一种可能性是,这两个用户的 UPN 可能已重新分配,现在您拥有多个包含旧 UPN 和新 UPN 的缓存条目。我建议检查缓存以查找此类重复项,如果存在,请相应地进行清理。
| 归档时间: |
|
| 查看次数: |
4922 次 |
| 最近记录: |