我的问题是是否可以将从我自己的数据库生成的用户 ID 添加为 ID 令牌中的自定义用户 ID 声明,该令牌由外部身份提供商签名和颁发。具体来说,我使用 Auth0 作为外部身份提供商。
我在 .NET 中有一个前端和一个后端,其中前端通过点击我的后端来启动 OpenID Connect 流,然后重定向到 Auth0 进行身份验证。用户登录或注册后,Auth0 会发出 ID 令牌,然后用户将被重定向回我的后端。检查 ID 令牌后,我看到 Auth0 生成的用户 ID 声明,但我需要添加从后端数据库生成的我自己的自定义用户 ID 作为 ID 令牌中的附加声明。
在.NET中,我尝试过挂钩各种事件,例如
OnTokenValidated
,但此时令牌已经被签名和发布,因此无法修改它。
我还阅读了 Auth0 的文档,其中建议使用
Actions
添加自定义声明。但是,由于我需要的声明对于每个用户来说都是唯一的,并且由我的应用程序生成,因此我必须 将我的本地计算机暴露到互联网,以允许 Auth0 操作检索此用户 ID 。我想在本地开发时避免暴露我的后端。
我正在寻找有关如何将此自定义用户 ID 声明添加到外部身份提供商颁发的 ID 令牌的建议,或者是否可能。 我已经提到了 Auth0,但如果有人解决了类似的问题,我愿意接受其他外部身份提供商的解决方案。
此外,我注意到在 .NET 中,有一个名为RedirectToIdentityProvider
的 OpenIdConnect 事件,我可以覆盖该事件。在这种情况下,我考虑生成一个自定义用户 ID,并在用户重定向到 Auth0 时将其作为参数传递。然后,我可能会从 Auth0 操作中读取此参数。然而,这种方法也没有意义,因为它会导致用户每次登录或注册时都会生成一个新的用户 ID。该用户 ID 只能在注册过程中生成一次,由 Auth0 处理。
添加从我自己的数据库生成的用户 ID 作为自定义用户 ID 声明 在 ID 令牌中......我需要的声明对于每个用户来说都是唯一的,并且 由我的应用程序生成根据描述,流程应该是
1.点击你的应用程序