특징
- 오픈소스 Identity and Access Management (IAM) 솔루션
- 사용자 인증 및 권한 관리를 간편하게 처리할 수 있는 플랫폼
- 주로 OAuth2, OpenID Connect, SAML과 같은 표준 프로토콜을 지원하며, 애플리케이션과 서비스 간의 인증 및 권한 부여 관리
주요 기능
- 사용자 인증
- OAuth2와 OpenID Connect를 통해 안전한 사용자 인증 제공
- 로그인 페이지 커스터마이징
- 권한 관리
- 사용자 그룹(Role) 및 권한(Permission)을 정의하고 관리
- 리소스 기반 접근 제어(Resource-Based Access Control) 기능 지원
- 토큰 관리
- Access Token, Refresh Token, ID Token을 발급하여 세션을 유지하고 인증 상태 관리
싱글 사인온 (SSO)
- 한 번 로그인하면 여러 애플리케이션에 접근할 수 있는 기능 제공
- 다중 인증 (MFA)
- OTP(One-Time Password), SMS 인증 등 추가적인 보안 계층 설정
- 연동 가능성
- 다양한 프로토콜(OpenID Connect, SAML 2.0)을 지원하여 다른 시스템과 쉽게 통합 가능
- Keycloak Admin REST API를 통해 Keycloak 서버 제어
- 사용자 관리
- 사용자 등록, 비밀번호 변경, 계정 잠금 등의 기능 제공
- LDAP 및 Active Directory와 통합 가능
구성 요소
- Realm
- Keycloak의 기본 단위로, 사용자와 클라이언트 애플리케이션 그룹화
- 각 Realm은 독립적으로 설정 가능
- Client
- Keycloak과 통신하는 애플리케이션
- 클라이언트 ID와 클라이언트 시크릿(Client Secret)을 사용하여 인증
- User
- Role
- 사용자에게 부여되는 권한
- Realm Role과 Client Role로 구분됨
- Token
- 사용자의 인증 정보를 포함하는 JSON Web Token(JWT)
- Access Token, Refresh Token, ID Token로 구분됨
활용
- OAuth2 기반의 인증 및 권한 관리가 필요한 웹 애플리케이션
- 싱글 사인온(SSO)을 구현하려는 다중 애플리케이션 환경
- 사용자 계정을 중앙에서 관리하고 싶은 경우
- LDAP/Active Directory와 통합하여 조직 내 사용자 관리를 간소화하려는 경우
JDK21을 이용해 Keycloak 서버 띄어보기
https://www.keycloak.org/getting-started/getting-started-zip
다음 포스팅에는 docker를 활용한 keycloak을 구동시켜 보겠다.