Synchronization OIDC授权代码流-索赔更新和同步

Synchronization OIDC授权代码流-索赔更新和同步,synchronization,authorization,openid-connect,claims,Synchronization,Authorization,Openid Connect,Claims,我已经使用节点oidc提供程序实现了一个授权服务器。我已经将作用域和声明配置为返回用户信息,例如给定的名称、家庭名称和地址。我有多个应用程序连接到授权服务器。在每个应用程序上,在成功身份验证时,我的授权服务器都会返回tokenSet(在client.callback()之后返回),之后我会使用client.userinfo()获取用户信息。如果用户在应用程序的内部数据库中不存在,我将使用从身份验证服务器返回的sub(user\u id)创建一个新数据库。如果它存在,我将更新用户的数据(例如,如果

我已经使用
节点oidc提供程序
实现了一个授权服务器。我已经将作用域和声明配置为返回用户信息,例如给定的名称、家庭名称和地址。我有多个应用程序连接到授权服务器。在每个应用程序上,在成功身份验证时,我的授权服务器都会返回
tokenSet
(在
client.callback()
之后返回),之后我会使用
client.userinfo()
获取用户信息。如果用户在应用程序的内部数据库中不存在,我将使用从身份验证服务器返回的
sub
user\u id
)创建一个新数据库。如果它存在,我将更新用户的数据(例如,如果用户更改了其
给定的\u名称
)。稍后,我的应用程序返回一个新生成的jwt令牌,以授权对其api的请求

一切正常,但我希望能够更改用户数据。我在授权服务器上准备了一个端点(
PUT/users/:userId
)来更新用户信息,它返回一个更新的用户对象,现在我有两个问题

我应该如何授权用户对用户更新端点的请求?我可以使用
access\u令牌来执行此操作吗?如果是,如何验证

第二个问题是关于同步。用户更新成功后,我的应用程序从授权服务器接收一个新的用户对象,并使用它更新内部数据库中的数据。更改仅在发送请求的应用程序上进行。更新其他应用程序数据库的最佳方式是什么?我可以在每次请求时从授权服务器获取用户数据并查找更改,但效率似乎很低。我可以在授权服务器上创建一个新的端点,该端点将返回特定时间段内的用户数据更改(基于
updated\u at
列),应用程序将配置一些cron作业来更新其数据库。这听起来也不是一个好主意。有没有更好的办法处理

谢谢你的帮助