是否可以创建一个用Microsoft Identity进行身份验证的Blazor Server多租户应用程序?

发布于 2025-01-20 08:34:42 字数 221 浏览 0 评论 0原文

我创建了一个需要多租户身份验证的 Blazor 服务器端应用程序。我在数据表中添加了一个 clientId 列,该列将用于客户端(租户)之间的数据分离。 我不想创建自己的登录和身份验证提供程序,因为我担心它不安全。但是,我看不到登录后获取用户 Id 的任何方法,所以我不知道如何获取用户的 ClientId。我可以使用 Identity.name 属性,但如果存在重复名称的用户,那就不好了。 我需要创建自定义登录/用户注册吗?

I have created a Blazor Server side app that requires multi tenant authentication. I have added a clientId column to the data tables, that will be used for data separation between clients (tenants).
I dont want to create my own login and authentication provider, as I'm worried it wont be secure. However, I cant see any way to get the user Id after login, so I have no idea how to get a users ClientId. I could use the Identity.name property, but that is no good if there are users with duplicate names.
Do I need to create custom login / user registration?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

贪了杯 2025-01-27 08:34:42

使用 Identity 时,当您从多租户上传所有用户时,他们将在数据表中附加正确的 userID(唯一),因此使用 UserManager 您可以使用以下方法 < strong>FindByIdAsync 或 FindByEmailAsync 但在这里,如果您向数据表中的单个用户收费,并且租户中有任何重复的客户端(您就是这种情况),那么您可能会遇到问题指定),你将会遇到一个问题,您不知道哪个租户是客户端,假设在您的登录请求中您将有 [AspNetUserLogins] 表,其中包含登录提供程序以及附加的正确密钥,因此您最好的解决方案是FindByLoginAsync

用户登录系统后,您可以使用 findByLoginAsync 向数据库询问 userId,对于该用户,您可以简单地使用 user.ClientId 获取 clientId

Working with Identity, when you upload all the users from the multi-tenant, they will have attached the proper userID(which is unique) in the data table, so using the UserManager you can use methods like FindByIdAsync or FindByEmailAsync but here you could have a problem, if you charge individual users to the data table, and you have any duplicate client in the tenants (which is the case you are specifying), you will have a problem that you doesn't know in which tenant is the client, assuming that in your login request you will have [AspNetUserLogins] table with the login provider and the proper key attached with this, so your best solution is FindByLoginAsync.

Once the user login into your system, you could ask to the database the userId with findByLoginAsync, and with that user, you could simply get the clientId with user.ClientId

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文