我有一个使用Identity Server 4的.net核心应用程序,它在应用程序中创建了许多非标准的授权声明 . 其中一些非标准声明对应用程序的行为方式有直接影响,并由数据库设置 . 如果用户在UI上执行某些操作,我将需要重置这些声明 .
所以我的问题,如果我在这里找到更新令牌,使用混合流程https://github.com/IdentityServer/IdentityServer4.Samples/blob/release/Clients/src/MvcHybrid/Controllers/HomeController.cs,是否会调用用户信息 endpoints 以获取更新的声明列表?所以或多或少,重置登录而不必注销并重新登录 . 或者我是否需要手动更新Claims主体?
我宁愿不必手动更新主体,让IS4完成繁重的工作 .
EDIT
使用上面的代码,我能够刷新令牌,我看到它正在调用IS4并重置IS4代码中的声明,但它没有获得实际上没有在客户端更新声明的用户配置文件 . 我无法在令牌中保存声明,因为令牌变得太大而无法注销,因此我在选项上启用了“GetClaimsFromUserInfoEndpoint” . 无论如何以编程方式重置UserProfile?
1 回答
找到了!使用示例代码中的刷新令牌,您需要在验证cookie之后但在登录cookie之前手动调用UserInfo endpoints 以获取更新的声明列表 .
可能还有一种方法可以使用“oidc”进行身份验证/登录 . 我试过了,但是无法让它发挥作用 .