身份服务器 - 使用刷新令牌获取更新的声明

Ali*_*zad 5 asp.net-core identityserver4

我在登录时在来自 DB 的访问令牌中添加了一些声明(例如entity_idrole)。现在在某个阶段,entity_id声明已更改,我需要使用更新的声明获取新的访问令牌。我正在使用刷新令牌来获取新的访问令牌,但它内部带有相同的旧声明;可能是因为在IResourceOwnerPasswordValidator刷新令牌的情况下没有调用实现类。那么如何在访问令牌中获取更新的声明呢?因为用户必须注销并重新登录才能更新entity_idrole声明。

我知道另一种选择是使用/userinfo端点进行声明,但我的问题是在这种情况下[Authorize(Roles = "Manager")],ASP.NET Core的属性将如何工作并了解角色,如果它们不存在于访问令牌中?

lea*_*ege 6

或者换一种说法 - 经常变化的数据不是代币声明的好候选者。

也就是说 - 在获取刷新的令牌时,您可以让身份服务器再次通过配置文件服务管道运行 - 请参见此处:

https://identityserver4.readthedocs.io/en/release/reference/client.html?highlight=UpdateAccessTokenClaimsOnRefresh

  • 这个答案有一个断开的链接 (2认同)
  • 更新的链接:https://identityserver4.readthedocs.io/en/latest/topics/refresh_tokens.html?highlight=UpdateAccessTokenClaimsOnRefresh (2认同)