ADAL4J缓存支持缺失?

时间:2016-07-08 05:16:33

标签: java azure adal azure-active-directory

我想将adal4j lib用于与广告相关的任务。它似乎不支持访问令牌的本地缓存,不是吗?是否有其他库提供这种支持?

https://github.com/AzureAD/azure-activedirectory-library-for-java/tree/master/src/main/java/com/microsoft/aad/adal4j

2 个答案:

答案 0 :(得分:2)

大多数开源库仅提供协议实现。 ADAL4J不提供缓存支持(与其他ADAL不同),但从开发人员中抽象出协议详细信息,以便它们可以与Azure AD集成。您可以考虑自己保存AuthenticationResult,并在访问令牌过期时使用结果中的刷新令牌。你可以为此调用acquireTokenUsingRefreshToken。

答案 1 :(得分:1)

正如@ KanishkPanwar-MSFT所说,ADAL4j不支持访问令牌的任何缓存机制。

但是,正如我所知,有一条指南显示了如何缓存来自文章Best Practices for OAuth 2.0 in Azure AD的“缓存访问令牌”部分的访问令牌。

  

缓存访问令牌

     

要最大程度地减少来自客户端应用程序的网络调用及其相关延迟,客户端应用程序应缓存访问令牌,以获取OAuth 2.0响应中指定的令牌生存期。要确定令牌生存期,请使用expires_in或expires_on参数值。

     

如果Web API资源返回invalid_token错误代码,则可能表示资源已确定令牌已过期。如果客户端和资源时钟时间不同(称为“时间偏差”),则在从客户端缓存中清除令牌之前,资源可能会认为令牌已过期。如果发生这种情况,请清除缓存中的令牌,即使它仍在计算的生命周期内。

与此同时,我认为你可以参考一篇文章Caching access tokens in a multitenant application,其中包括.NET的一些示例代码。