使用 FusionAuth 的多租户 OAuth

Multi tenant OAuth with FusionAuth

我正在阅读 Matt 关于在 React 应用程序中实施 OAuth 授权代码授权的优秀文章。 https://fusionauth.io/blog/2020/03/10/securely-implement-oauth-in-react

我们有一个多租户实施,想知道推荐的方法是什么来确定用户作为哪个租户进行身份验证。例如,如果我们有两个不同租户的不同用户,都注册了同一个应用程序,并且都有相同的用户名,是否可以询问用户他们属于哪个租户?

我想我可以在授权查询字符串中传递 tenantId,但这需要我已经问过 "where are you from" 问题。我需要实现这个吗,或者 FusionAuth 可以开箱即用吗?

我已经阅读了有关登录主题的文档,但这似乎更多地是关于显示租户,而不是请求它? https://fusionauth.io/docs/v1/tech/themes/

很棒的产品..提前致谢。

所以你这样说:

if we have two different users in different tenants, both registered for the same application

FusionAuth 应用程序与租户相关联,因此无法在租户之间共享 FusionAuth 应用程序。来自 https://fusionauth.io/docs/v1/tech/apis/authentication#making-an-api-request-using-a-tenant-id

Some resources in FusionAuth are scoped to Tenants such as Users, Groups and Applications. When more than one tenant exists these APIs will require a tenant Id to ensure the request is not ambiguous.

现在,当然可以让您的应用程序在客户之间共享,其中每个客户都是 FusionAuth 租户。所以你问的问题很好。我将其改写为 "how can an web application or other client of FusionAuth know which tenant it is associated with?" 如果这不是您要问的问题,请告诉我。

如果您有一个为多个客户部署的网络应用程序(比如一个待办事项应用程序),并且每个客户都是 FusionAuth 中的租户,待办事项应用程序可以根据域名(foo.todo.com 或 bar.todo.com) 或路径(todo.com/foo 或 todo.com/bar)它被部署到哪个 FusionAuth 租户 ID(foo's 或 bar's)以传递给 FusionAuth。这是一个相关的论坛 post:https://fusionauth.io/community/forum/topic/19/can-different-tenants-have-their-own-custom-domains-self-hosted-community-edition

如果在 URL 级别没有区别,您可以将租户 ID 存储在数据库中的组或用户 table 上。

还值得注意的是,在 FusionAuth 的默认设置中,客户端 ID 是应用程序 ID。应用程序 ID 将登录会话绑定到特定租户,因为每个 FusionAuth 应用程序只属于一个 FusionAuth 租户(尽管一个租户可以有多个 FusionAuth 应用程序)。