yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Keycloak: что это такое и как работает авторизация

Разработка собственной системы аутентификации и авторизации — это сотни человекочасов, потенциальные дыры в безопасности и бесконечное сопровождение кода. Но зачем изобретать велосипед, когда есть Keycloak? Рассказываем, как настроить готовое IAM-решение и забыть о проблемах доступа.

Обзоры
Иллюстрация для статьи на тему «Keycloak: что это такое и как работает авторизация»
Продукты из этой статьи:
Иконка-Evolution Managed PostgreSQL®
Evolution Managed PostgreSQL®

Что такое Keycloak

Keycloak — open-source решение для управления доступом (IAM), изначально созданное Red Hat. Проект развивается как открытое сообщество, а компания Red Hat предлагает коммерческую поддержку через Red Hat build of Keycloak. Он предназначен для управления доступом, обеспечивает безопасную аутентификацию и авторизацию в разных веб-приложениях и сервисах. 

Система поддерживает стандарты OAuth 2.0, OpenID Connect и SAML 2.0, работает как отдельный сервер и подходит для программных продуктов с микросервисной архитектурой. Она облегчает задачу разработчикам, снимая с них необходимость самостоятельно реализовывать процессы регистрации пользователей, входа в приложения, хранения паролей и многое другое.

Некоторые возможности Keycloak:

  • Единый вход (Single Sign-On, SSO) — пользователю достаточно один раз пройти аутентификацию в системе, после чего он получит доступ ко всем подключенным приложениям без повторного ввода пароля. 

  • Социальные логины — возможна авторизация через внешние сервисы и системы, такие, как Google, VK, GitHub и другие. 

  • Централизованное управление пользователями — Keycloak позволяет создавать, удалять и редактировать учетные записи, управлять ролями и правами доступа. 

  • Поддержка RBAC и расширенных сценариев авторизации — система позволяет назначать доступ на основе ролевой модели (RBAC), а также через настраиваемые политики и атрибуты с использованием встроенной Authorization Services (поддержка ABAC).

  • Интеграция с внешними каталогами — поддержка подключения к LDAP и Active Directory для синхронизации пользователей и работы с корпоративными учетными записями.

  • Управление политиками безопасности и пользовательскими сессиями — с помощью решения администраторы могут настраивать парольные политики, правила блокировки пользователей, время жизни токенов для аутентификации, правила принудительного выхода из приложения и другие параметры. 

Keycloak подходит для облачных инфраструктур, использования в контейнерах и кластерах, включая Kubernetes-среды. Благодаря этому решение становится универсальным для разнообразных проектов — от маленьких до масштабных. 

Почему Keycloak важен

Keycloak отвечает за аутентификацию и авторизацию, избавляет разработчиков от необходимости самостоятельно выстраивать систему проверки логинов и паролей для подтверждения личности пользователей. Достаточно подключить одно решение и получить все необходимое. 

Keycloak подходит в качестве централизованной системы управления доступом в облачных инфраструктурах, которые сейчас используют многие компании. Решение помогает унифицировать процессы аутентификации, облегчает сопровождение приложений и снижает риски, связанные с ненадежным хранением учетных данных.

Keycloak помогает разделить ответственность. Система занимается проверкой данных пользователей и выдачей токенов, а приложениям остается только «чекнуть» права на основе этих токенов. Такой подход упрощает управление доступом и повышает безопасность. 

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Как работает Keycloak

Keycloak — самостоятельный сервис с собственной панелью управления, REST API, интеграциями и клиентами для распространенных фреймворков и языков программирования. Для понимания принципов работы представьте систему как единый пропускной пункт перед несколькими объектами, которыми выступают разные приложения. На этом пункте пользователь проходит проверку личности, после чего получает цифровой пропуск — токен. Приложения доверяют этому токену и предоставляет на его основе доступ с учетом назначенных пользователю прав. 

В Keycloak есть единицы изоляции — реалмы, внутри которых хранятся пользователи, роли и настройки доступа для каждого клиента. Именно благодаря реалмам можно использовать одно решение для нескольких проектов. Объекты из одной единицы изоляции не пересекаются с объектами из другой, то есть пользователи, роли и настройки для каждого сервиса и приложения будут разными. 

Архитектура KeycloakАрхитектура Keycloak

Чтобы было понятнее, кто такие пользователи, роли и клиенты, подробнее опишем каждую сущность: 

  • Пользователи — учетные записи сервисов или людей. Когда происходит попытка входа в приложение под этими учетками, Keycloak сверяет указанные данные с сохраненными и при совпадении предоставляет токен доступа. 

  • Роли — сущности, описывающие права доступа. Фактически это правила, которые определяет, что те или иные пользователи могут делать в системе. Они бывают realm-уровня и client-уровня. В первом случае роли действуют внутри конкретного реалма. Роли client-уровня относятся к определенному подключенному приложению. У одного пользователя может быть одна или несколько ролей. При авторизации проверяется их наличие в токене. 

  • Клиенты — сервисы и приложения, которые делегируют Keycloak задачи по распознаванию пользователей, их ролей и прав доступа. Примеры клиентов: backend-сервисы, мобильные и веб-приложения. Все эти объекты регистрируются в реалмах и получают уникальные идентификаторы. Когда пользователь попытается войти, клиент перенаправит его на сервер Keycloak. После успешной проверки приложение примет токен пользователя и позволит совершать действия в соответствии с правами доступа. 

В зависимости от типа клиента пользователи получают несколько видов токенов. Access token нужен для единоразового доступа к защищенным ресурсам, API или сервисам. Refresh token позволяет без повторного ввода учетных данных получить новый Access token, когда у предыдущего закончится срок действия. ID token содержит данные о личности пользователя и используется для подтверждения факта аутентификации.

Управляемый PostgreSQL
Управляемый PostgreSQL
Масштабируйте БД в 2 клика с SLA 99,7%
Подробнее

Возможности Keycloak

Мы уже рассказывали об основных возможностях решения. Остановимся на двух самых востребованных. 

SSO (единый вход)

SSO — механизм единого входа, когда пользователь проходит аутентификацию в одной системе и после этого может без ввода логина и пароля получить доступ к подключенным сервисам. В Keycloak он реализован на уровне реалма. Если пользователь успешно проходит аутентификацию в одном клиенте, сервер запускает сессию, которая хранится на стороне системы аутентификации. Когда пользователь открывает другой сервис, зарегистрированный в том же реалме, Keycloak проверяет наличие активной сессии. Если она есть, доступ будет предоставлен без повторного ввода пароля, поскольку пользователь уже считается аутентифицированным. При выходе из системы Keycloak помогает закрыть сессию сразу во всех подключенных приложениях. 

SSO упрощает доступ к внутренним сервисам в корпоративной среде, улучшает пользовательский опыт, облегчает поддержку архитектуры с несколькими сервисами. Кроме того, такой подход снижает риски безопасности, связанные с собственными системами входа в каждом приложении.

Интеграция с разными протоколами

Keycloak поддерживает различные протоколы авторизации и аутентификации: OAuth 2.0, OpenID Connect, SAML 2.0, а также интеграцию с корпоративными каталогами через LDAP. Это стандарт для интеграции с большинством систем и сервисов. Например, OAuth 2.0 позволяет Keycloak выдавать Access token для входа в подключенные приложения. Также благодаря протоколу сервисы могут получать ограниченный доступ к пользовательским ресурсам, например, контактам или фотографиям. 

OpenID Connect расширяет возможности OAuth 2.0 и добавляет слой аутентификации. Благодаря ему можно получать ID token с информацией о личности пользователя. 

Поддержка протоколов позволяет интегрировать Keycloak с веб-приложениями, мобильными клиентами, одностраничными приложениями и бэкенд-сервисами. Эта возможность делает систему аутентификации незаменимой для классических и облачных корпоративных инфраструктур, микросервисных сред. 

Установка и базовая настройка Keycloak

Keycloak можно запустить разными способами: через Docker-контейнер, из архива, в Kubernetes или в составе контейнерной платформы. Рассмотрим наиболее распространенные сценарии.  

Проще всего запустить решение через Docker. Это делается с помощью официального образа quay.io/keycloak/keycloak. В процессе разработки применяется команда start-dev, в продакшн-окружениях — start. Минимальный запуск в разработке выглядит так: 

После запуска административная консоль решения доступна по адресу http://localhost:8080. Входить нужно под учетной записью, которая указана в переменных окружения. 

В продакшн окружении нужно подключить СУБД, создать базу данных и пользователя, запустить Keycloak в режиме start. Пример с использованием PostgreSQL:

Можно запустить решение из архива, который скачивается с официального сайта Keycloak. В Linux или macOS для запуска после распаковки применяется команда: 

В Windows:

Для production-запуска start-dev заменяется на start. 

Перед запуском в конфигурации нужно задать сетевые настройки и параметры базы данных. Это можно сделать через файл conf/keycloak.conf. Пример содержимого для PostgreSQL:

Первоначальная настройка системы

После установки и запуска Keycloak нужно создать реалм, зарегистрировать клиентов, добавить пользователей и настроить роли. Настройки можно выполнить через административную консоль или с помощью утилиты kcadm.sh. 

Начинайте с создания реалма, который будет в пределах одного логического пространства изолировать клиентов, пользователей и их роли. Для администрирования сервера обычно используется реалм master, для систем — «рядовые» реалмы. Чтобы создать их через веб-интерфейс решения, выберите пункт Create Realm, укажите имя и примените изменения. 

Реалм masterРеалм master

Через kcadm.sh реалм создается примерно так:

Затем нужно зарегистрировать клиента — сервис или приложение. В настройках Keycloak укажите идентификатор Client ID, тип протокола, redirect URI при необходимости. 

Регистрация клиента через утилиту будет выглядеть подобным образом: 

Настройка клиентовНастройка клиентов

Для публичных клиентов используется параметр publicClient=true, для серверных приложений — client secret. 

Затем следует задать роли реалма и роли клиентов. В первом случае алгоритм выглядит так: 

Роль клиента создается так: 

Затем следует добавить пользователей, которые будут храниться внутри реалма, иметь собственные учетные данные, атрибуты и роли. Как создать пользователя через kcadm.sh:

Пароль устанавливается так: 

Затем пользователю назначается роль: 

Настройка ролейНастройка ролей

Интеграция в приложение

Перед интеграцией в административной консоли нужно создать клиента, с которым будет интегрироваться Keycloak. Что нужно указать:

  • Client ID — уникальный идентификатор приложения;

  • Client type — public или confidential (публичный или конфиденциальный клиент);

  • Redirect URI — адреса, на которые сервер может возвращать пользователя после входа.

  • Web origins — допустимые источники для CORS, если клиентом выступает браузерное приложение.

Для интеграции можно использовать библиотеки для конкретных приложений и официальные адаптеры. Для Java-приложений поддерживаются Spring Security и Jakarta EE. Для JavaScript можно использовать библиотеку keycloak.js. 

Базовый сценарий для веб-приложения при интеграции с Keycloak будет таким: 

  • Пользователь открывает защищенную страницу, приложение перенаправляет его на endpoint авторизации Keycloak.

  • Пользователь проходит аутентификацию, после чего Keycloak возвращает его Redirect URI с параметром code.

Приложение отправляет полученный код на token endpoint и получает Access token и ID token, проверяет их и создает собственную сессию. Проверка токена может выполняться с помощью публичного ключа реалма или через endpoint

Если интеграция выполняется в SPA или фронтенд-приложение, нужно настроить public-клиент. В таком случае client secret не применяется. 

Инсталляции для продакшен

Подход к развертыванию Keycloak в продуктивной среде отличается от запуска в режиме разработки. В первую очередь нужно сделать акцент на безопасность. Проверенные практики: 



  • Предусмотрите отдельную базу данных, поскольку встроенная dev-база не подходит для реальных нагрузок. Например, можно использовать облачное решение Evolution Managed PostgreSQL от Cloud.ru.  

  • Используйте HTTPS и прокси, чтобы сервер был доступен только по защищенному протоколу. Следите за корректными настройками параметров, чтобы исключить ошибки редиректа и подмену адресов.   

  • Отключите dev-режим и выполняйте запуск командой start, чтобы не было упрощения конфигурации.

  • Настройте парольные политики — назначьте требования к сложности, длине и срокам ротации паролей. 

  • Ограничьте доступ к административной консоли и master-реалму для повседневной работы. Используйте для рутинных задач роли с минимально достаточными полномочиями. 

  • Регулярно создавайте бэкапы БД и экспорт конфигурации реалмов, чтобы в случае сбоев и ошибок восстановить критически важные данные и настройки.  

  • Предусмотрите интеграцию с системами мониторинга и сборов логов. Это позволит отслеживать ошибки аутентификации, попытки подбора паролей и проблемы с производительностью.

В продуктивной среде компрометация Keycloak означает компрометацию всей системы аутентификации. Рассматривайте решение как критичный компонент безопасности с высокими требованиями к обновлениям, изоляции проектов и контролю доступа. 

Заключение

Keycloak позволяет построить централизованную систему аутентификации и авторизации для сервисов и приложений любого уровня сложности. Решение избавляет разработчиков от необходимости создавать собственные механизмы доступа в аккаунты, хранения учетных данных и управления ролями. Благодаря поддержке разных протоколов и единого входа SSO Keycloak легко интегрируется в микросервисные и облачные архитектуры. Главное — обеспечьте корректные настройки решения в продакшн-среде, чтобы соблюсти баланс удобства и безопасности. 

Продукты из этой статьи:
Иконка-Evolution Managed PostgreSQL®
Evolution Managed PostgreSQL®
27 марта 2026

Вам может понравиться