在具有OIDC身份验证的网络应用程序中存储来自数据库的用户相关数据的最佳方式



我有一个受azureAD(OpenIdConnect(保护的Core3.1 web应用程序,我从idtoken中检索我需要的大部分用户相关数据:用户名、电子邮件、员工ID,甚至用户的AD组。我还需要从数据库中获得一些额外的数据,我不确定我应该如何将这些数据存储在应用程序中,以使其在用户登录的整个时间内随处可用

我不想用饼干。目前,我使用了会话。问题是这个会话的过期时间与身份验证会话不同,所以我不得不调用一个静态方法来检查变量是否为空,并最终再次执行查询。它有效。。。但是很丑陋。

我觉得我应该以不同的方式处理事情,但我不知道该怎么做。

基于索赔的解决方案在这里可以发挥最佳效果,您可以:

  1. 在API中定义声明对象
  2. 当API首次收到访问令牌时填充它
  3. 为具有相同访问令牌的后续请求缓存声明对象
  4. 此缓存将始终与用户会话同步

有关该模式的更多详细信息,请参阅我的博客文章。下面是一些实现代码。

最新更新