我有两个独立的项目:
两者都有自己独立的数据库。
到目前为止,我已经能够让两者进行通信,以便 Blazor 应用程序在重新发现没有人登录时自动重定向到身份提供者。然后用户可以登录身份提供者并将他们重定向回 Blazor显示他们的声明的应用程序。
Blazor 应用程序将需要大量仅与此应用程序相关的用户权限。我打算做的是在 Blazor 数据库中有一个单独的用户详细信息表,然后在用户通过身份验证后引用这些权限。
我正在努力弄清楚的是:当身份提供者将用户返回到 Blazor 并提供相关声明时,我如何使用这些声明(特别是电子邮件地址声明)在我的 Blazor 用户中查找用户详细信息数据库,以便我可以获得他们的权限并将它们存储在会话中?或者我应该将这些额外信息存储为附加声明吗?
Blazor 中的 AddOpenIDConnect 处理程序提供了各种可以挂接的事件处理程序,尤其是 OnTokenValidated 事件处理程序。
这个处理程序是一个绝佳的机会,可以根据接收到的 ID 令牌中的主题(子)声明查找本地用户信息。
我认为这篇博文 here 很好地介绍了如何去做。
为了补充这个答案,我写了一篇更详细的博客文章 关于这个主题:在 ASP.NET Core 中调试 OpenID Connect 声明问题