Top.Mail.Ru

Эффективное управление доступом: работа с Client

Создание Client

В этой серии статей мы шаг за шагом рассматриваем полный путь работы с Keycloak — от установки и создания администратора до настройки realm, добавления клиентов и управления пользователями.

Компания Software Cats уже более пяти лет занимается аутстафом и аутсорсом по направлениям

Если у вас есть ИТ-проблема, оставьте ваши контакты, и мы поможем составить план ее решения.

На рисунке показан интерфейс, где можно создать клиента. Необходимо нажать на кнопку "Create client".
После нажатия кнопки, мы попадаем в меню для создания нашего клиента, как показано на рисунке . В общих настройках выбираем тип клиента, задаем его идентификатор, наименование и описание.

В общих настройках указан пункт "Always display in UI", который позволяет отобразить в консоли пользователя в разделе "Applications" данного клиента. Нам это не нужно, поэтому оставляем этот параметр без изменений.
Следующим шагом будет настройка возможностей данного клиента.
Client authentication
Этот переключатель определяет тип клиента OIDC. Когда он включен, тип является конфиденциальным доступом. Когда он отключен, тип является общедоступным доступом. Включаем данный параметр.

Authorization
Параметр позволяет производить более тонкую настройку доступом, так как авторизация будет происходить на стороне Keycloak. После включения данного параметра в настройках клиента появится вкладка "Authorization", где можно настраивать различные политики для ролей, пользователей и т.д., области действий, привилегии.
Например, можно настроить доступ к определенным ресурсам по URI, разрешить или запретить вызывать какие-то rest методы. Предположим, что у нас есть таблица, где хранится список рецептов. Существуют две роли: повар и сотрудник ресторана. В данном случае, мы можем ограничить не только по роли, но и по привилегиям. Сотрудник, например, сможет только просматривать список рецептов, повар Василий сможет добавлять в список новые рецепты, а повар Алексей сможет только обновлять запись и т.д.
В результате с приложения снимается вопрос авторизации и переносится в Keycloak. Такой вариант позволяет гибко менять права пользователей, так как не придется поддерживать эти ограничения в самих микросервисах.
Данная реализация требует отдельной статьи, поэтому оставим этот способ на будущие. Не включаем этот параметр.

Authentication flow
Здесь перечислены варианты разрешения на авторизацию или по другому "flow". Представлены классические способы, которые описываются в протоколе OAuth2.0.
Мы выбираем "Standard flow", где используется "Authorization Code". Сначала нужно будет получить код, который мы обменяем на токен.
Можно выбрать "Direct access grants", где используется "Resource Owner Password Credentials". Этот вариант позволяет не получать код для замены на токен, а сразу получить токен, однако в теле запроса необходимо будет передать логин и пароль пользователя. Обычно такой вариант выбирается для доверенных сервисов, например, для общения сервисов друг с другом в приватной сети.

PKCE Method
Позволяет зашифровать код, который обменивается на токен. Повышает безопасность.
Требует отдельной статьи для рассмотрения, пока не включаем данную возможность.

На рисунке показан заключительный этап создания клиента.
Root URL
Это базовый URL вашего приложения

Home URL
Адрес, куда пользователь будет перенаправлен после успешного входа (логина)

Valid redirect URIs
Список URI, на которые Keycloak разрешает перенаправлять пользователя после аутентификации

Valid post logout redirect URIs
URI, на которые пользователь может быть перенаправлен после выхода из системы (logout)

Web origins
Список источников (origin), с которых разрешены CORS-запросы к Keycloak
На рисунке показан результат созданного клиента.
Создание клиента в Keycloak позволяет зарегистрировать приложение или сервис внутри выбранного realm. Именно клиенты определяют, какие системы смогут использовать Keycloak для аутентификации и авторизации, поэтому этот шаг является ключевым при интеграции.
Наша команда уже более пяти лет занимается реализацией проектов на Java и усилением команд по направлениям

За время существования компании, мы принимали участие в работе над более чем 100 проектами различного объема и длительности.

Если перед вами стоят вызовы, при которых вам может пригодится наша экспертиза, просто напишите нам,

Мы договоримся с вами об онлайн-встрече, чтобы подробнее обсудить ваш проект и вашу проблему.
Кирилл Буханцов
Java developer

Еще почитать по теме:

    Обсудить проект _
    Если у вас есть ИТ-проблема , оставьте свои контакты, и мы поможем правительству спланировать ее решение . Обещаем не рассылать спам.
    hello@softwarecats.dev
    Новосибирск, ул. Демакова
    23/5, оф.308
    Контакты _

    Выполненные проекты: