MSAL AcquireTokenByAuthorizationCode in a web farm



我正在使用ASP。NET 4.8,针对Azure AD实现OpenID身份验证,并连续提供对Power BI API的访问。此处对场景进行了描述。我不明白的是这在网络农场中是如何工作的。

以下是我如何理解单个服务器上的步骤:

  • 用户使用OpenID对Azure AD进行身份验证并接收授权码

  • ConfidentialClientApplication在调用AcquireTokenByAuthorizationCode以获取存储在令牌缓存中的AccessToken时使用此授权代码。

  • 稍后,当用户需要访问某些API时,会从令牌缓存中检索AccessToken。如果AccessToken已过期或不存在,ConfidentialClientApplication可以访问RefreshToken以获取新的AccessToken。

我想我不明白这在多服务器场景中是如何工作的。如果web场中的节点A完成了上述步骤并包含访问和刷新令牌,那么当节点B为没有这些令牌的请求提供服务时会发生什么?有没有办法从cookie中获取刷新令牌,以便在节点B上请求新的访问令牌?

谢谢你的帮助!

您应该使用分布式缓存。点击此处了解更多信息:https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-token-cache-serialization?tabs=aspnetcore#distributed-令牌缓存

注意:上面的链接不包含现成的示例,您需要首先设置任何类型的真实分布式缓存(SQL、Radis、NCache(:https://learn.microsoft.com/en-us/aspnet/core/performance/caching/distributed

最新更新