Keycloak 인증 솔루션 선택 - 그리고 ext개발

1 minute read

관련기술 모음

  • https://memo.polypia.net/archives/3821

Keycloak vs CAS 선택은

국내에서는 Springboot을 많이 쓰다보니 CAS를 많이 쓸 것 같지만
사용의 난해성 때문에 Keycloak이 더 많이 사용된다
(CAS는 딱 이정도만 해보고 포기 https://memo.polypia.net/archives/3783)

Keycloak을 서비스에 적용하려고 보면 약간의 문제가 있다

  • application 서버와 별도 인스턴스를 띄워야한다는 문제
  • 회원 디비가 application과 별도로 관리된다는 문제

해야하는 일

  • 로그인, 회원가입 화면 만들기 - 보통 테마만 추가
  • 커스텀 회원정보 수정화면/기능 만들기 application에 또는 keycloak 커스텀
  • 회원가입, 로그인 로그 저장
  • 회원가입, 로그인 이벤트 전달

어려운 부분

  • 회원디비를 application에 두고 연동해서 사용
    이건 매우 어렵다. 잘 안된다. 극한의 커스터마이징을 하려면… 그냥 따로 만드는게 낫다
    서비스 초반에는 있는 그대로 쓰자….
  • 디비를 공유
    캐시때문에 싱크가 안맞다
  • 그냥 무엇이건 커스터마이징…

간단하게 결론을 내면
뭘 쓰건 기본기능 그대로 쓸게 아니라면 사용이 쉽지는 않다.

초반에는 서비스를 오픈소스에 맞춰서 쓰자

Keycloak 사용후기

keycloak은 간편한 편이다.
그런데 서비스 개발용이 아니라 블로그, 위키 등 운영 용으로 만들어진게 아닐까?
개발자가 서비스를 개발할 때 사용하기는 불편하다.

(14버전쯤)추가기능 구현도 도큐먼트 대로 되지도 않고 엄청 복잡했는데
한달정도 보다보니 구조파악이 되고 좀 할만해졌다. 소스보고 알아서 분석해서 써야한다.
그냥 도큐먼트만 보고 하려면 rest api 호출하는것도 쉽지가 않다.(공식문서에 주소를 엉터리로 적어놔서 ㅋ)

keycloak 소스코드와 포럼의 질문답변을 잘 읽어봐야한다

JBoss 스타일로 만들어져서 Spring생태계에 익숙한 개발자가 접근하기 쉽지 않다
jas-rx 기반 resteasy, wildfly 서버, jboss의존성 관리 등등..

  • https://github.com/keycloak
  • https://github.com/ScriptonBasestar-io/keycloak-providers
  • https://github.com/thomasdarimont/keycloak-user-storage-provider-demo
  • https://www.baeldung.com/java-keycloak-custom-user-providers
  • https://github.com/thomasdarimont/keycloak-extension-playground
  • https://github.com/zonaut/keycloak-extensions