C# 强制Identity Server子应用程序刷新声明

C# 强制Identity Server子应用程序刷新声明,c#,asp.net-core,identityserver4,claims,C#,Asp.net Core,Identityserver4,Claims,我有一个父web应用程序,它使用identity server跨一组其他web应用程序对用户进行身份验证,这些应用程序充当父应用程序的子应用程序 我们利用父应用程序中的概要文件服务来设置可与子应用程序一起使用的用户声明。此配置文件服务在启动时通过使用IdentityServerBuilderExtensionsAdditional.AddProfileService向Identity Server注册 在用户声明中,我们存储了一些用户首选项,以便在子应用程序中轻松访问。最近,我们在父应用程序中添

我有一个父web应用程序,它使用identity server跨一组其他web应用程序对用户进行身份验证,这些应用程序充当父应用程序的子应用程序

我们利用父应用程序中的概要文件服务来设置可与子应用程序一起使用的用户声明。此配置文件服务在启动时通过使用
IdentityServerBuilderExtensionsAdditional.AddProfileService
向Identity Server注册

在用户声明中,我们存储了一些用户首选项,以便在子应用程序中轻松访问。最近,我们在父应用程序中添加了功能,允许用户直接更新这些首选项

不幸的是,在刷新用户的令牌之前,这些更新似乎不适用。这可能长达5分钟。对于我来说,似乎没有任何方法可以向子应用程序广播父应用程序中发生了变化

在父应用程序中,如何通过让子应用程序调用该用户配置文件服务来强制其刷新声明


我已尝试将用户注销,然后重新登录,例如

等待注销();
等待登录(用户、记忆);

有趣的是,这实际上似乎在我的开发机器上本地工作,但一旦部署到生产环境中,这就不起作用了。但我无法确定我的配置和生产配置之间的任何差异。因此,我正在寻找一种更强大的方法来强制儿童应用程序尽早调用此用户配置文件服务。

您是使用jwt还是引用令牌作为访问令牌?@MisirJafarov jwt's您是否可以尝试使用引用令牌?区别在于jwt令牌包含用户声明。如果您更改了某些内容,则需要重新颁发jwt令牌。但我认为引用令牌从db读取声明。因此,您可能有机会在不更改令牌本身的情况下远程更新声明。(注:更改令牌类型可能会将所有用户从应用程序中注销)这是可行的,但不幸的是,我认为我们可能需要更改相当多的基础设施才能做到这一点。如果我们不将用户偏好存储在声明中,并使用另一种方式将信息下放到子应用程序中,那么工作可能会少一些。例如,一个带有web钩子的API端点已经发生了改变。感谢您的建议,我不知道不同类型的代币之间存在不同的行为。请查看: