我正在构建一个使用AAD保护的.NET核心Web API,它使用ADAL使用代表流来调用下游API ....与此Azure示例类似:
https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof
在这样的场景中应该使用的令牌缓存的最佳实践是什么?
-
默认缓存是否可以接受?
-
你有没有缓存?
AuthenticationContext authContext = new AuthenticationContext(authority,null)
- 如果您应该自己构建,那么有一个很好的参考实现可供使用吗?
1 回答
您使用的正确令牌缓存非常主观,实际上取决于您的体系结构,性能要求等 .
ADAL使用的默认缓存是内存缓存,这意味着它可能不会在API接收的请求中保留 . 此外,ADAL.NET使用的默认缓存是一个静态类,这意味着对API的两个不同请求可能会获取相同的缓存对象,这通常是意外的,因为这两个请求可能是针对不同的用户 . 因此,通常不建议使用默认的ADAL缓存 - 这实际上取决于Web服务器的工作方式 .
相反,如果您可以管理性能命中,或者最好实现您自己的令牌缓存,我们建议将
null
作为令牌缓存传递 .如果您想实现自己的缓存,它将使您的应用程序不必在每个传入请求上向AAD(通过ADAL)发出出站HTTP请求 . 使用.NET实体框架的示例ADAL缓存实现可用here,并在下面复制: