Keycloak — это open-source решение для управления идентификацией и доступом (IAM), поддерживающее OAuth 2.0, OpenID Connect (OIDC) и SAML. Вопросы разделены по темам, начиная от базовых понятий и заканчивая продвинутыми настройками.
1️⃣ Основные концепции Keycloak
- Что такое Keycloak и для чего он используется?
- Какие основные компоненты архитектуры Keycloak?
- Что такое Realm в Keycloak?
- Какие есть типы Clients в Keycloak?
- Как Keycloak управляет Users?
- Что такое Roles в Keycloak, и какие бывают их типы?
- Что такое Groups, и как они связаны с ролями?
- Какие способы аутентификации поддерживает Keycloak?
- Что такое Identity Providers (IdP) в Keycloak?
2️⃣ Настройка аутентификации и авторизации
- Как работает процесс аутентификации в Keycloak?
- Какие протоколы аутентификации поддерживает Keycloak?
- Чем отличается OAuth 2.0 от OpenID Connect?
- Как настроить Single Sign-On (SSO) в Keycloak?
- Как настроить многофакторную аутентификацию (MFA) в Keycloak?
- Что такое Authentication Flows и как их настроить?
- Как настроить OTP (One-Time Password) в Keycloak?
- Как организовать логин через социальные сети (Google, Facebook, GitHub)?
- Как работает passwordless authentication в Keycloak?
3️⃣ Работа с токенами (JWT, Refresh, Access)
- Какие типы токенов использует Keycloak?
- Что содержит Access Token в Keycloak?
- В чём разница между Access Token и ID Token?
- Как настроить Refresh Token в Keycloak?
- Как изменить время жизни токенов в Keycloak?
- Как работают scopes и claims в Keycloak?
- Как настроить подпись токенов (JWT Signature Algorithm)?
- Как обновить или отозвать токен (Token Revocation)?
4️⃣ Интеграция с внешними системами
- Как интегрировать Keycloak с Spring Boot / Java / Node.js?
- Как настроить аутентификацию через LDAP / Active Directory?
- Как добавить Keycloak в NGINX или Apache в качестве reverse proxy?
- Как реализовать API Gateway с Keycloak?
- Как использовать Keycloak с Kubernetes и Istio?
- Какие основные различия между Keycloak и других IAM решений (Okta, Auth0, AWS Cognito)?
5️⃣ Конфигурация и управление Keycloak
- Как можно управлять Keycloak через Admin REST API?
- Как настроить Keycloak Client Adapters для различных языков?
- Как работают Client Scopes, и зачем они нужны?
- Как настроить Role-Based Access Control (RBAC)?
- Как настроить Attribute-Based Access Control (ABAC)?
- Как создать custom user attributes в Keycloak?
- Как настроить E-mail notifications (SMTP)?
- Как можно экспортировать и импортировать Keycloak настройки?
6️⃣ Безопасность и продвинутые настройки
- Какие механизмы защиты от атак (например, brute-force) есть в Keycloak?
- Как настроить IP-рестрикции (IP Restrictions) в Keycloak?
- Как работает Trusted Hosts Policy?
- Как настроить Fine-Grained Permissions в Keycloak?
- Как реализовать декларативные политики безопасности (Authorization Policies)?
- Как защитить API с помощью Keycloak?
- Как можно добавить PKCE (Proof Key for Code Exchange)?
- Как настроить Keycloak для работы с MTLS (Mutual TLS)?
7️⃣ Мониторинг и развертывание
- Как развернуть Keycloak в Docker / Kubernetes?
- Какие базы данных поддерживает Keycloak (и как их настроить)?
- Как Keycloak управляет кластеризацией?
- Как мониторить Keycloak с помощью Prometheus и Grafana?
- Как настроить логирование и аудит в Keycloak?
- Какие механизмы failover и high availability (HA) поддерживает Keycloak?
- Как правильно бэкапить Keycloak и восстанавливать данные?
8️⃣ Кастомизация и расширение функционала
- Как создать custom authentication flow в Keycloak?
- Как добавить новый провайдер аутентификации?
- Как реализовать Custom Event Listeners?
- Как расширить Keycloak с помощью SPI (Service Provider Interface)?
- Как изменить UI страниц логина (Freemarker templates)?
🎯 Дополнительные вопросы для senior-уровня
- Как работает механизм Offline Sessions в Keycloak?
- Как Keycloak управляет кэшированием с помощью Infinispan?
- В чём разница между Keycloak.X и стандартным Keycloak?
- Как Keycloak может работать в multi-tenant среде?
- Как работает User Federation?
- Как настроить Keycloak для работы в режиме Read-Only Mode?
- Какие есть альтернативы Keycloak, и когда стоит их использовать?
- Как масштабировать Keycloak в облачных средах (AWS, Azure, GCP)?
- Как работают Cross-Realm Token Exchange?
- Как защитить Keycloak от DDoS-атак?