DevOps, Infra

[인증/인가] Keycloak User Storage SPI

seulseul 2024. 4. 10. 01:52

Service Provider Interfaces (SPI)

SPI 는 사용자가 상황에 맞게 Keycloak 의 기능중 일부를 커스텀하여 사용할 수 있도록 Keycloak 에서 제공하는 모듈이다.

SPI 는 Thema (로그인,회원가입 화면) , User Storage SPI , Authentication SPI, Vault SPI 등 여러 종류가 있다.

사용 가능한 SPI 는 Keycloak Admin Console 에서 확인할 수 있다.

 

가장 단순한 형태의 사용자 지정 공급자는 하나 이상의 서비스 구현을 포함하는 표준 jar 파일입니다.

 

사용가능한  SPI

Name Description
org.keycloak.authentication.AuthenticatorFactory  사용자 또는 클라이언트 애플리케이션을 인증하는 데 필요한 작업 및 상호 작용 흐름을 정의합니다.
org.keycloak.authentication.actiontoken
.ActionTokenHandlerFactory
/ auth / realms / master / login-actions / action-token 엔드 포인트 에 도달했을 때 Keycloak이 수행 할 사용자 지정 작업을 생성 할 수 있습니다 . 예를 들어,이 메커니즘은 표준 암호 재설정 흐름 뒤에 있습니다. 이메일에 포함 된 링크에는 이러한 조치 토큰이 포함되어 있습니다.
org.keycloak.storage.UserStorageProviderFactory Keycloak이 사용자 정의 사용자 저장소에 액세스하도록 허용합니다.
org.keycloak.vault.VaultProviderFactory Vault 를 사용하여 Realm 특정 비밀을 저장할 수 있습니다. 여기에는 암호화 키, 데이터베이스 자격 증명 등과 같은 정보가 포함될 수 있습니다.

 

Keycloak Server Directory (11.0.3 )

  • bin/ :  서버를 부팅하거나 서버에서 다른 관리 작업을 수행하는 다양한 스크립트 포함
  • domain/ : 도메인 모드에서 keycloak 을 실행할 때 구성 파일과  Working Directory 가 포함
  • modules/ : 서버에서 사용하는 Java 라이브러리를 포함한 디렉토리. (ex.외부 RDBMS 를 연결할 때 필요한 jdbc driver) 
  • standalone/ : This contains configuration files and working directory when running Keycloak in standalone mode.
  • standalone/deployments/ : If you are writing extensions to Keycloak, you can put your extensions here. See the Server Developer Guide for more information on this.
  • themes/ : This directory contains all the html, style sheets, JavaScript files, and images used to display any UI screen displayed by the server. Here you can modify an existing theme or create your own. See the Server Developer Guide for more information on this.

Keycloak Admin Console

 

Keycloak Login Flow

오픈소스 솔루션 (GitLab , ArgoCD, MinIO ..) 과 Web 화면은 Keycloak 을 사용하여 SSO 로그인을 처리했으며, 로그인 절차는 아래와 같습니다.

 

 

 

  1. 사용자가 연동 서비스에 접근
  2. 연동서비스는 Keycloak 으로 인증 절차를 진행하도록 설정했으므로, Keycloak 에 인증을 요청한다.
  3. 로그인 페이지 오픈
  4. 사용자가 로그인 정보를 (id, password) 입력하면 해당 정보는 Keycloak 으로 전송된다.
  5. Keycloak 은 외부 저장소 정보로 사용자 정보를 확인한후 로그인을 처리한다.
  6. 연동서비스에 인증 전달
  7. 연동 서비스 페이지 오픈

Keycloak 에서는 외부저장소로 Ldap ,Kerberos , User Storage SPI 을 사용할 수 있으며, 외부저장소로 Ldap 이나 Kerberos 를 사용한다면 별도 개발 없이 연동할 수 있습니다.