Spring Security OAuth2 Client를 적용하기 어렵다고 Keycloak 연동을 포기하지 마세요


제목 그대로 OIDC (Open ID Connect) 연동을 위한 Client용 Template Code입니다.

Keycloak, Google과 같은 IDP (Identity Provider)에 Legacy Spring 또는 Legacy 전자정부 Framework Application을 연동할수 있게 해주는 Template Code입니다.

기존 인증 체계에 대한 영향과 기존 코드에 대한 침습을 최소화하고자, Template Code와 관련 설정을 기존 Legacy Application에 '추가'하여 적용하는 형식으로 설계했습니다.

Jar Package가 아닌 Template Code로 배포한 이유
사용자에게 코드를 공개하여 투명성을 확보하고 사용자 임의로 트러블 슈팅이 가능하도록 하였습니다.
Spring / 전자정부 Framework Package를 사용하되, Version의 충돌 없이 사용자 Client가 사용하는 Framework Package를 그대로 이용할수 있으므로, 이식성 측면에서 Jar Package보다 더 낫다고 판단했습니다.

이 Template Code를 만든 이유
보안 지식도 필요하지만, 개발 경험도 같이 필요한 분야가 바로 OAuth 2.0 분야가 아닐까 싶습니다.
그래서 보안지식을 같이 쌓으며 개발자 생활을 한 제게는 적합한 분야라고 생각합니다.
또한 제 전공과도 밀접한 관계가 있습니다. 석사 논문 주제로 다루었던 분아갸 이 분야입니다.

논문 작성 시 제안의 검증을 위해 Spring Security OAuth2 Client를 이용하여 자체 IDP와 Client 및 Resource Server를 개발했었습니다.
그 이후 수년이 지나 당시 제가 작성한 IDP와 Client를 Migration하여 동작시켜보려 했습니다.
그런데, Migration이 쉽지 않더군요.
OAuth2 Client Package 뿐만 아니라 그에 관련된 모든 의존성들의 Migration이 불가피한 상황이었습니다.
문법도 바뀌었습니다.
뿐만 아니라 Application이 보유한 기존 인증 체계와 공존하여 동작시키고 싶었으나, 그런 부분이 구현하기 까다로웠습니다.

그래서 이 Template Code를 제작했습니다.
이식하기 수월하고, 코드전체가 투명하게 공개되어 개발자의 통제하에 있으며, 의존성 지옥을 피하면서 기존 인증 체계와 공존하기 쉽게 할 목적을 가지고 제작했습니다.
Legacy Application과 연동하고자 시작된 아이디어였었기에, 이 Template Code는 Legacy Spring/전자정부 Framework Application을 대상으로 합니다.
최신의 Spring/전자정부 Framework Application은 Spring Security OAuth2 Client의 적용이 용이하지만,
의존성 및 기타 문제등으로 그것들을 적용하기 어렵다면, 이 Template Code가 답이 될수도 있습니다.

이 OIDC Template Code는 설정 몇 줄만 추가하면 Keycloak이나 Google과 뚝딱 연동되는 마법의 코드는 아닙니다.
Spring 및 Spring Security의 설정을 이용하기에 Spring 설정 지식이 있어야 하고,
최소 5종의 추상 Interface를 구현해주셔야 하기에 개발 지식도 필요합니다.
적용하기 까다로운 것은 사실이라고 생각합니다
하지만, 연동 후 추가적인 Migration이 필요하지 않으며 기존 인증 체계를 그대로 이용할수 있다는 점과, 아무 코드나 패키지도 없이 OIDC 연동을 하는 것보다는 작업에 소요되는 시간과 공수를 단축시킬수 있다고 생각합니다.

기술 자문(유료) 문의는 좌측의 Email로 문의하여 주시기 바랍니다.

OIDC Template Code-Client는 아래 링크에서 접하실 수 있습니다.

GitHub


아래 링크는 OIDC Template Code-Client를 적용하여 Keycloak과 연동시킨 전자정부 프레임워크 실행환경 통합 예제 저장소입니다.
각 추상화 Interface의 구현 클래스가 포함되어 있으므로, 연동 작업 시 참조가 되실것으로 생각합니다.
연동 절차에 대한 상세 설명을 보시려면, 아래 링크에서 APPLY_DETAILS.md 파일을 참조하시기 바랍니다.

GitHub


Keycloak - Legacy 전자정부 프레임워크 실행환경 통합예제 인증 및 기본 RBAC 연동 시연 영상

YouTube

Keycloak의 인가 기능을 이용한 Legacy 전자정부 프레임워크 실행환경 통합예제 RBAC 연동 시연 영상

YouTube


Keycloak - Legacy Spring 프레임워크 (Spring Security 없음) RBAC 연동 시연 영상

YouTube

업데이트: