Keycloak — это продукт с открытым исходным кодом для управления идентификацией и доступом для современных приложений и сервисов. Существует клиентская библиотека (Keycloak-js), которую можно использовать для создания защищенного приложения.

Недавно я впервые пытался интегрировать keycloak-js в свое приложение Reason и искал в Интернете более элегантный способ справиться с этим. Некоторые идеи я почерпнул из этих двух постов: [1], [2]. Ниже приведены некоторые из моих учебных заметок.

Я сделал то же самое, что и два предыдущих поста, чтобы инициализировать keycloak в моем приложении. myConfig должен быть вашим личным JSON-файлом конфигурации keycloak.

Мы можем вызвать keycloak, когда наше приложение Reason смонтировано; поэтому мы можем проверить, аутентифицирован ли входящий пользователь для просмотра защищенной части нашего приложения (ref). Если все остальные вещи обрабатываются на стороне сервера, то все готово.

Однако я думаю, что лучший способ управления аутентификацией – это интегрировать Keycloak на стороне сервера (чтобы мы не раскрывали наш токен доступа или, возможно, другую информацию на стороне клиента). Это говорит о том, что у нас есть бэкенд, который готов к интеграции. Все, что нам нужно сделать во внешнем интерфейсе, — это перенаправить пользователей на API входа в систему, когда другие конечные точки отвечают кодом состояния 401. Все будет так же просто, как следующий фрагмент кода:

Нам больше не нужно использовать keycloak-js. Все обрабатывается на стороне сервера, и нам не нужно запрашивать аутентификацию у keycloak как на внешнем, так и на внутреннем интерфейсе. Обратите внимание, что если у пользователя нет разрешения: например, он не является администратором (вместо того, чтобы не входить в keycloak), лучше обрабатывать код состояния 403 где-то еще.