Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Это первая часть серии статей о переходе на Keycloak в качестве SSO в условиях кровавого enterprise.
Целью данной серии постов является демонстрация одного из возможных вариантов внедрения Keycloak в большой enterprise проект в качестве SSO. Еще в ней будут приведены мои размышления на этот счет, а также описаны сложности, с которыми пришлось столкнуться и решения, которые при этом были найдены.
В данный момент я работаю в большом проекте, который имеет весьма длинную историю развития. Нашими заказчиками являются представители крупного бизнеса, такие как банки и различные торговые площадки.
Проект написан на spring-framework и как следствие использует компоненты spring-security для реализации системы аутентификации / авторизации пользователей.
В силу специфики нашего бизнеса крупные заказчики иногда имеют возможность проталкивать свои потребности в наш проект, в частности различные подходы к аутентификации пользователей. Таким образом, со временем развития проекта в нем появилась куча специфичных для конкретных заказчиков компонентов аутентификации:
Basic (по логину паролю)
По логину паролю с ассеss и refresh-token
OAUTH
SAML
LDAP
JWT (где наш бэкенд выступает просто в качестве resource-server, а аутентификация происходит на стороне заказчика)
На сегодняшний день реализованные нами компоненты аутентификации и авторизации уже очень сильно устарели и техническое руководство приняло, на мой взгляд, очень верное решение избавиться от них полностью и внедрить SSO (Single sign-on). Выбор пал на Keycloak, как на явного фаворита в среде систем данного рода с открытым исходным кодом. (В данной последующих постах не будут подниматься вопросы delivery нашего продукта заказчику вкупе с Keycloak и специфики комбинации проприетарного и open-source кода).
Когда я только начал заниматься этой задачей, я весьма оптимистично оценил ее в 100 чч по трудозатратам, потому что буквально недавно внедрил Keycloak на другом проекте за неделю, однако я не учел, что мой нынешний проект в десятки раз больше и запутаннее чем предыдущий, который только-только стартовал.
Продолжение следует...