강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

이 희재님의 프로필 이미지
이 희재

작성한 질문수

keycloak, oauth2을 이용한 spring boot 인증 처리

작성

·

1.9K

·

수정됨

0

안녕하세요.

프론트와 백엔드간에 인증처리 구성을 테스트 하던 중 궁금한게 있어 질문드립니다.

  1. 프론트와 백엔드에 kecloak 적용 방법이 궁금합니다.

현재 프론트, 백엔드 모두 spring boot를 사용했습니다.
그 다음 spring-boot-starter-oauth2-resource-server, spring-boot-starter-oauth2-client를 적용하려고 하는데요.

  • keycloak 로그인을 해서 인증 세션을 생성(프론트) : client 적용

  • 들어온 요청이 인증된 요청인지 확인(백엔드) : resource-server 적용

이렇게 적용하면 되는걸까요?

 

  1. REST API 호출 시 인증 처리 방식이 궁금합니다.

1) 같은 realms 안의 client들 끼리는 keycloak SSO 처리로 인증된다.?
2) keycloak에서 토큰정보 조회 url을 호출해서 받은 access-token을 헤더에 넣어서 받는 쪽에서 token을 파싱해서 인증 체크를 한다.

2번으로 한다고 하면 access-token을 얻어오는 방식이 url을 호출해서 받아오는 게 맞는 방법인지가 궁금합니다.

프론트 접속 -> keycloak 로그인 페이지 호출 -> keycloak 로그인 -> 백엔드 호출 요청 -> keycloak에 access-token 요청 -> access-token을 헤더에 넣고 백엔드 호출

-> 백엔드에서 헤더에 있는 access-token을 확인 -> keycloak에 token 검증 요청

이 흐름대로 동작한다고 생각하면 될까요? 아니면 로그인 되어 있는 상태라면 access-token을 꺼낼 수 있는 방법이 있는걸까요?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

Spring Boot 백엔드와 Keycloak을 사용하여 인증 처리를 구성하는 것에 대해 궁금하신 것 같습니다.

  1. 같은 realms 안의 client들 끼리는 Keycloak SSO 처리로 인증된다.
    Keycloak에서 realms를 설정하면, 해당 realms 안에 있는 client들은 SSO 처리를 통해 인증된다는 말씀이신가요. 그렇다면 맞습니다. Keycloak은 클라이언트 간의 SSO (Single Sign-On)을 제공하므로, 같은 realms 안에 있는 클라이언트들은 인증되어 있을 경우 재인증 과정 없이 서로간의 인증을 공유할 수 있습니다.

  2. Keycloak에서 토큰 정보 조회 URL을 호출해서 받은 access-token을 헤더에 넣어서 받는 쪽에서 token을 파싱해서 인증 체크를 한다.
    프론트 접속 시 Keycloak 로그인 페이지를 호출하고 로그인 후에 백엔드 호출 요청을 하게 되는데, access-token을 어떻게 받아오는지가 궁금하신 건가요? Keycloak은 OpenID Connect, OAuth 2.0 기반으로 인증과 인가를 처리하기 때문에, 백엔드에서는 Keycloak으로부터 발급받은 access-token을 헤더에 포함하여 호출하는 방식으로 인증 체크를 할 수 있습니다. 이 방식으로 진행하신다면, 백엔드는 받은 토큰을 검증하기 위해 Keycloak 서버의 Token Endpoint로 토큰을 검증하는 요청을 할 수 있습니다. 토큰의 유효성을 검증해야 하기 때문에 토큰을 직접 파싱해서 확인할 수도 있지만, Keycloak API를 통해 유효성을 검증하는 것이 안전하고 편리합니다.

이상입니다. 추가적으로 궁금한 사항이 있으신가요?

이 희재님의 프로필 이미지
이 희재

작성한 질문수

질문하기