ADAL Mac 返回 300 AD_ERROR_CACHE_MULTIPLE_USERS 错误

2024-01-10

我们使用 ADAL Mac 库进行身份验证。使用此库时,我们收到 300 错误 (AD_ERROR_CACHE_MULTIPLE_USERS),其描述为:The token cache store for this resource contains more than one user. Please set the 'userId' parameter to the one that will be used.

什么时候会发生这种情况?应该如何处理这种情况?


背景

ADAL 具有用于设备上所有访问/刷新令牌的令牌缓存。用户、所请求的资源等的缓存键。

应用程序可能会进入缓存中有多个令牌用于同一请求的状态。虽然这些令牌可能代表某些不同的信息,但令牌查找请求中提供的信息在某种程度上是不明确的。简单的例子:

Cache

hash(userA,B,C) -> token pair 1
hash(userB,B,C) -> token pair 2
hash(userA,F,G) -> token pair 3

查找(AcquireTokenSilent)

现在我们执行一个 AcquireTokenSilent 请求(缓存查找)。此请求不需要缓存的每个主元。例如,

AcquireTokenSilent(B, C)

此请求存在歧义,它可能映射到令牌对 1 或 2。

处理此错误

所以此时有两个解决方法:

  1. 在同一请求中提供更多信息。

    您可以执行新的 AcquireTokenSilent 请求,提供一些更多信息,使 ADAL 能够明确选择缓存条目。在这种情况下,ADAL 需要一个 userId,这意味着您的应用需要存储或查找该值并将其传递到请求中。在我们的例子中,

    AcquireTokenSilent(userA, B, C)
    
  2. 忽略缓存并从头开始。

    如果您无法检索 userId 并且无法恢复,您的应用程序可以执行交互式身份验证请求并要求最终用户输入其凭据。如果您拥有有效的令牌,这将是一种不利的体验,因为您的用户将需要进行不必要的登录。这只是一个标准的 AcquireToken 请求。从我们的示例来看(没有用户可以请求,

    AcquireToken(B, C) 
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ADAL Mac 返回 300 AD_ERROR_CACHE_MULTIPLE_USERS 错误 的相关文章

随机推荐