[영상 보기] 오픈소스 Keycloak을 이용한 인증서버 구축기
영상 요약
1. Keycloak을 선택한 이유
- 내부 서비스 인증 방식으로 sso (single sign on) 사용, 기존에 발생했던 이슈로 인해 두가지의 SSO 인증을 도입 했으나 이에 따른 또다른 문제 발생 → 새로운 해결책이 필요하게 됨
- (1) 오픈소스 (2) 다양한 인증 연동 방식 지원, 두가지 니즈를 충족하는 솔루션 중 익숙한 언어로 개발되었고 조금 더 대중적인 keycloak 을 선택함
2. Keycloak
- realm 단위로 인증 범위가 결정되며 (같은 realm 에 연동된 서비스끼리는 한번의 로그인으로 모두 사용 가능), 하위로 client 개념도 존재
- OpenID Connect (Keycloak 은 해당 방식 권장), SAML 방식으로 연동 가능
사용한 기능 (NHN)
- User Storage Federation: 계정 정보 저장에 대한 외부 저장소를 위한 기능
- LDAP, Kerberos, User Storage SPI (사용자가 모듈을 개발하고 사용 가능하도록 함. 커스터마이징)
- Authentication SPI: 사용자의 커스텀 인증 로직을 적용할 수 있도록 하는 기능 (ex. 임시 잠금)
- Keycloak 의 Authentication > Flows 메뉴에서 SPI 적용
- Realm, client 별로 설정이 가능하므로, 서로 다른 인증 플로우를 적용시킬 수 있음
- 로그인 페이지: ‘테마’ 기능을 통해 Keycloak 의 로그인 페이지를 커스터마이징 가능
3. 발생했던 이슈 및 해결 방법 (NHN)
- 운영 환경에서는 서비스 규모에 따라 다중 서버로 구성 되기 때문에 하나의 서버에서는 인증이 성공하지만 다른 서버에서는 인증이 실패함
-
또한 http 와 https 로 함께 서비스를 제공하는 경우, https 의 쿠키가 http 에는 공유가 되지 않음 (secure)
→ 1, 2 둘다 redis 를 통해 인증 세션 정보를 공유함으로써 해결
- Legacy System 의 한계 → 추가개발 (SPI) 을 통해 지원
4. 개선 방향
- 인증 보안 강화 → 새로운 환경 로그인 모니터링, 2단계 인증, 인증 강제 종료
- 버전 업그레이드 → 신중히, Release Note 잘 살피기
느낀점
- 이전부터 관심이 있던 오픈소스였는데, 이번 영상을 보고 Keycloak 서버를 구축해서 직접 사용해보면 재밌을 것 같다는 생각이 들었고 개인적으로 사이드 프로젝트 하거나 할때도 도움이 되지 않을까 싶음.
- AWS 와 같은 서비스 인증 또한 Keycloak 에서 연동이 가능한 것으로 알고 있는데, 각각 어떤 서비스에 어떻게 적용 해볼 수 있는지 알아보고 테스트 해보면 좋을 것 같다는 생각이 들었음.