Мультитенантный OAuth с FusionAuth - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю над прекрасной статьей Мэтта о реализации предоставления кода авторизации OAuth в приложении React. https://fusionauth.io/blog/2020/03/10/securely-implement-oauth-in-react

Мы имеем мультитенантную реализацию и хотели бы знать, каков рекомендуемый подход для определения того, с каким арендатором аутентифицируется пользователь. Например, если у нас два разных пользователя в разных арендаторах, оба зарегистрированы для одного и того же приложения и оба имеют одно и то же имя пользователя, можно ли спросить пользователя, к какому арендатору он принадлежит?

Я думаю, что смогу передать вдоль tenantId в строке запроса на авторизацию, но это потребовало бы, чтобы я уже задавал вопрос «откуда ты». Нужно ли реализовывать это или FusionAuth может предоставить это «из коробки»?

Я прочитал документацию по темам входа в систему, но, похоже, это больше касается отображения арендатора, а не его запроса? https://fusionauth.io/docs/v1/tech/themes/

Отличный продукт .. заранее спасибо.

1 Ответ

1 голос
/ 30 апреля 2020

Итак, вы говорите:

если у нас два разных пользователя в разных арендаторах, оба зарегистрированы для одного и того же приложения

Приложения FusionAuth привязаны к арендатору, поэтому невозможно использовать приложение FusionAuth совместно с арендаторами. От https://fusionauth.io/docs/v1/tech/apis/authentication#making -an-api-request-using-a-tenant-id

Некоторые ресурсы в FusionAuth относятся к арендаторам, таким как пользователи, группы и приложения. Когда существует более одного арендатора, для этих API потребуется идентификатор арендатора, чтобы запрос не был неоднозначным.

Теперь, конечно, можно разделить ваше приложение с клиентами, где каждый клиент является клиентом FusionAuth. Так что вопрос, который вы задаете, хороший. Я бы перефразировал его как «как веб-приложение или другой клиент FusionAuth может узнать, с каким клиентом он связан?» Если это не тот вопрос, который вы задаете, сообщите мне.

Если у вас есть веб-приложение (скажем, приложение todo), которое вы развертываете для нескольких клиентов, и каждый клиент является арендатором в FusionAuth, todo Приложение может знать, основываясь на имени домена (foo.todo.com или bar.todo.com) или пути (todo.com/foo или todo.com/bar), к которому оно развернуто, для которого идентификатор клиента FusionAuth (foo или bar) передать FusionAuth. Вот соответствующее сообщение на форуме: https://fusionauth.io/community/forum/topic/19/can-different-tenants-have-their-own-custom-domains-self-hosted-community-edition

Если на уровне URL нет различий, вы можете сохранить идентификатор арендатора в таблице группы или пользователя в базе данных.

Стоит также отметить, что в настройках по умолчанию для FusionAuth идентификатор клиента является идентификатором приложения. Идентификатор приложения связывает сеанс входа в систему с конкретным клиентом, поскольку каждое приложение FusionAuth принадлежит только одному клиенту FusionAuth (хотя у клиента может быть несколько приложений FusionAuth).

...