티스토리 뷰

 

0. Keycloak 이란?

Keycloak은 Open Source 기반의 IAM(Identity and Access Management) 소프트웨어로 사용자에 대한 인증(Authentication)과 인가(Authorization) 관리기능을 국제 인증/인가 표준 프로토콜(OIDC, SAML, OAuth 2.0 등) 기반으로 제공한다.

계정 관리 및 access 관리에 용이한 어드민 콘솔을 제공하고, SSO가 가능하다. 즉 마이크로서비스나 웹 애플리케이션에서 사용자 관리 및 보안을 중앙 집중화 하고, 간단하게 구현할 수 있도록 도와준다. 

출처: https://www.linkedin.com/pulse/simplify-user-access-keycloak-single-sign-on-sso-shrivastava/

 

나의 경우 인턴 과제로 키클록을 생성해 고객사마다 Realm을 생성하고, 각 기업에서 사용할 여러 웹 애플리케이션을 Client로 추가해서 (예: AWS QuickSight BI 대시보드 앱, 관리자 앱 등) SSO 기능을 제공하기 위해 키클록을 사용하게 됐는데, 인증 및 보안을 키클록이 자체적으로 관리해 준 점이 무척 편리하게 느껴졌다. 또한 콘솔에서 모든 회원을 관리하고, 역할을 부여하는 중앙 집중화된 시스템이 관리자 입장에서 무척 편리해서 좋았다.

 

그래서 이렇게 키클록 설치부터 스프링 시큐리티에 적용하는 일련의 과정을 기록해 보고자 한다.

 

 

 

1. JDK 버전 확인

java -version 명령어를 사용해 jdk 버전을  확인한다. 이때 버전 11 이상만 키클록 지원이 가능하므로 그보다 작으면 새로 설치하자.

 

 

2. KeyCloak 다운로드 https://www.keycloak.org/downloads

오픈소스로 직접 커스텀해서 실행하기: https://github.com/keycloak/keycloak

 

 

3. 압축 해제 후 실행

다운로드한 후, 해당 압축 파일을 해제하고, kc.sh start-dev 명령어로 키클록을 실행한다. (윈도는 kc.bat start-dev)

이때 키클록 실행의 디폴트 포트는 8080번으로, 스프링부트 포트와 동일하기 때문에 충돌을 피하려면 포트 번호를 지정해서 실행해야 한다. 나의 경우 '--http-port 8090' 옵션을 지정해 포트를 8090으로 설정해서 실행했다.

 

 

4. localhost:8090 접속 후 어드민 계정 생성

 

 

5. 어드민 로그인

 

 

6. Realm 생성

 

여기서 Realm이란 SSO를 적용할 마이크로 아키텍처 서비스 하나, 프로젝트나 서비스 한 단위를 의미한다. 

Realm에 등록한 모든 Client에 대해 SSO가 적용되기 때문에 SSO를 적용하고 싶은 모든 서비스를 묶어서 하나의 Realm에 묶어 넣어준다고 생각하면 된다. 우선 실습을 위해 aws-springboot라는 realm을 생성해 줬다.

 

 

7. Client 생성

[1] Client 기본 설정: Type은 OpenID, 클라이언트 ID와 설명 작성

 

[2] 보안 설정: 여기서 디폴트로 Client authentication과 Authorization 옵션이 Off로 되어있는데 이를 On으로 바꿔줘야 Credential 탭이 생겨서 Client Secret을 생성할 수 있다. 

 

[3] 로그인 시 리다이렉트 될 URI 지정: 스프링부트가 로컬호스트 8080에서 동작하므로 다음과 같이 지정해 준다. 

 

3단계까지 완료하면 Save 해서 저장한다.

[4] Client 세팅에서 Credentials의 Client Secret을 복사해서 잘 저장해 둔다.(필요할 때 복사해도 괜찮다) 스프링 시큐리티 Oauth 연결에서 필요하다.

 

 

여기까지 하면 키클록에서 해야 하는 세팅은 모두 끝난다.

다음 포스팅에서는 스프링 시큐리티 설정 하는 방법을 다뤄볼 것이다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함