Как бы я изолировал клиентский доступ, настройку keycloak - PullRequest
0 голосов
/ 05 марта 2020

Как бы я изолировал клиентский доступ, если у меня более одного клиента. Я пытаюсь добиться того, чтобы выданный токен доступа действовал только для предполагаемой службы. пример. Если у меня есть два клиента client1 и client2, токен, выданный client1, не должен иметь доступа к ресурсам из client2, в данный момент мои настройки разрешают этот тип доступа для обоих клиентов установлен как конфиденциальный. и токен JWT содержит поле client_id (которое является «aud»), но это не оценивается на этапе аутентификации.

1 Ответ

0 голосов
/ 06 марта 2020

Есть несколько способов, которыми это может быть достигнуто. Метод, который я бы использовал, заключался в определении роли внутри каждого клиента, которую пользователь должен иметь для доступа к этому клиенту. Затем вы должны проверить перед тем, как разрешить доступ этому клиенту, что у них есть эта роль клиента.

Чтобы создать роль клиента, в консоли администратора выберите свою «область», затем «Клиенты» в меню слева = > выберите «client2» => выберите «Roles» => «Add Role» и назовите его как хотите. Скажите «admin».

Чтобы предоставить эту роль пользователю, чтобы он мог получить доступ к этому клиенту, go «Пользователи» => Выберите пользователя => Сопоставления ролей => В разделе роли клиента выберите свой client => выберите новую роль и назначьте ее пользователю.

Затем вам необходимо ограничить доступ к области из клиента 1, выбрав «Клиенты» => «Клиент 1» => «Вкладка Области» => Снимите флажок «Полные области разрешены» => выберите «клиент 2» из выпадающего списка «Роли клиента» и убедитесь, что роль не применяется к этому клиенту.

Теперь вы можете проверить, получит ли этот пользователь доступ на эту роль от входа в «клиент 1», перейдя в «Клиенты» => «Клиент 1» => «Области клиента» => «Оценка вкладка». Если клиентские области настроены правильно, вы не должны получать доступ к роли клиента 2.

Последняя часть головоломки - это настройка вашего Клиента для проверки на эту роль. В бэкэнд-API (или другом месте принудительного применения на стороне клиента) настройте Keycloak для защиты от вновь созданной роли клиента для этого клиента. Например, если бы ваш API был написан на Node, вы бы использовали адаптер Node Keycloak, настроив его на «Клиент 2» app.get( '/special', keycloak.protect('admin'), specialHandler );

Более подробную информацию о защите с использованием адаптеров можно найти здесь: https://www.keycloak.org/docs/latest/securing_apps/#_nodejs_adapter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...