Comments 28
Мы используем два разных решения для балансировки нагрузки — для внутренних пользователей(локальная сеть) и внешних (доступ из публичных сетей). Это специализированные решения.
Возможно стоит более детально изучить проблемы на предмет тюнинга сетевого стека при использовании haproxy или иных.
Я планирую затронуть эти вопросы во второй части статьи, где будут технические детали развертывания кластера.
Есть множество вариантов почему возникает подобная проблема и основное влияние оказывает инфраструктура, в которой развернуто решение — контейнеры или ВМ и версии софта.
Спасибо за вводную, действительно, хотелось бы побольше информации по реализации, так как инструмент выглядит перегруженным и геморройным в эксплуатации. У такого рода ПО, как правило, гора тонкостей и нюансов, толком не описанных в документации и решаемых разным количеством костылей и матюков. Хотелось бы почитать.
PS. Слышал, что у X5 высокая доля внедрения IPv6 в интранете, интересно было бы почитать.
Keycloak — достаточно мощная система, но и достаточно "интересная" в плане интеграции, начиная с отсутствия библиотек под некоторые распространённые языки. А rest api позволяет не всё, например создавая scope'ы, он вам не отдаст их scope_id, и наоборот, получая scope_id, вы не получите название scope'а. Или я просто плохо искал?
Через что в итоге вы внедряли, у вас композитный доступ по ресурсам или обычный по группам?
Клиентами управляю так же через апи (точнее, через ансибл модуль).
По поводу scope и scope_id возможно стоит сделать два запроса (но это решение прямое и в лоб – без погружения в задачу)
У нас используются различные вариации, а так же в ряде случаев для машинного взаимодействия
По моему опыту, использование собственных библиотек KC только усложняет жизнь.
Я предпочитаю брать любую другую реализацию OIDC/OAuth2 c поддержкой JWKS. Ну и в конце концов, библиотек по работе с JWT более чем достаточно на любой вкус, а написать специфичный для веб-фреймворка middleware, распаковывающий и валидирующий токены — не запредельно сложно.
API у него и вправду довольно жуткий. Меня убило уже то, что из него нельзя получить названия ролей пользователя по id пользователя в один запрос.
Мне настолько не нравится сам KC, что я избегаю решений, которые могут нас к нему сколько-то привязать.
Тем не менее, для низкого старта нет ничего лучше.
По моим субьективным ощущениям Кийклоак многовато делает. Ведь редко все это нужно в комбинации.
Какие альтернативы этому продукту существуют? Мозехт кто-то посоветует?
Самая интересная мне фича это раздача OAuth2 токенов (в JWT формате). База пользователей есть уже, к ней надо привязать.
Так же возможна связка APIGEE + Keycloak — для высоконагруженных проектов, где есть монетизация.
Опять же каждый решает сам по применимости к своему стеку и всегда есть альтернатива
База пользователей есть уже
тут два варианта навскидку
- написать user storage provider для KC(довольно несложно пишутся, но IMO неудобно отлаживать)
- взять опенсорсный OIDC или OAuth2 провайдер по вкусу и поменять источник пользователей в нем
взять опенсорсный OIDC или OAuth2 провайдер по вкусу
Так вот какие советуете то?
Честно говоря — я пока не присматривался всерьез, мы пока плагинами в KC обходимся.
Из того, что попадалось на глаза и вызывало некоторый интерес
https://github.com/cloudfoundry/uaa
https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server
https://github.com/mbuczko/cerber-oauth2-provider
На офсайте OIDC есть целый список реализаций, смотреть те, в которых есть identity provider.
https://openid.net/developers/uncertified/
Выглядит все как-то слабо на фоне КС. Хм… видимо КС это немного старый принцип. Все в одном флаконе…
Интересным показался вот этот подход. Отдельбые тулы выполняющие свои задачи. https://www.ory.sh/docs/ecosystem/projects
Смотрю на них теперь. Так же на КС и амазоновский Cognito.
И наверно нам, как новичкам в этой теме, неплохо все иметь из коробки как у КС.
Да, на ORY Hydra я тоже поглядывал, он выглядит как минимум занятно.
Но все же для низкого старта, когда нужен полноценный OAuth2/OIDC, лучше KC по-моему ничего нет. Интегрировать его в систему несложно, гибкость настройки более чем достаточная, работает достаточно прилично. За пару лет не припоминаю сбоев, когда проблема была в самом KC.
Там есть какие-то отличия от Keycloak?
Или это просто некая стабильная и поддерживаемая версия?
Вижу, что последний RHSSO использует keycloak 4.x под капотом, хотя недавно вышел уже 8.0.2
А где вторая часть?
SSO на микросервисной архитектуре. Используем Keycloak. Часть №1