我将用户选择的文化存储到用户声明中,并且我有一个自定义 RequestCultureProvider 读取此值并相应地设置请求文化。
该应用程序将有一个个人资料页面,用户可以在其中更改他的偏好(包括文化)。将数据保存到数据库后,我需要默默地重新登录用户以更新他的声明。
附加信息:
- 我将 IdentityServer4 与 AspNet Core 2.0 和 Asp.Net Identity 一起使用
- 我正在将文化加载到 OnTokenValidated 事件(客户端应用程序)中的声明中。也可以在 GetProfileDataAsync (IProfileService) 或 UserClaimsPrincipalFactory (ASP.NET Core Identity) 中完成
- 该系统由 3 个 Web 应用程序(Idsv4 + app1 + app2)组成。个人资料页面在应用程序中实现。
- 使用配置了 Asp.NET Identity 的单个 Web 应用程序,您可以使用 SignInManager 中的 RefreshSignInAsync 方法重新生成用户的应用程序 cookie,但是我需要从客户端应用程序(app1 和 app2)触发此过程,因此无法访问 SignInManager。
- 我尝试使用 HttpContext.Authentication.ChallengeAsync("oidc") HttpContext.Authentication.SignInAsync 并且显然调用了身份验证端点,但是我无法处理响应并且它在我调用此代码的 MVC 操作中生成无限循环。
那么,如何使用 Idsrv4 实现静默重新签名?