[Keycloak] SSO 로그인 시 Custom 한 updateUserProfile 페이지 뜨지 않는 문제

cielo ru·2024년 6월 19일
0

Keycloak

목록 보기
6/6

➰ 서론

진행하는 프로젝트에서는 Keycloak 기본 회원가입 창에서 제공하는 사용자 필드 외에도 주소, 성별, 생년월일 등의 정보도 필요했다. 그래서 Spring과 Keycloak을 연동하여 CustomUserFederation을 구현하였다.

Keycloak 자체 로그인을 하면 회원가입 시 추가 정보들도 입력할 수 있도록 바로 아래에 필드들이 떴지만 SSO(Google, Github) 로그인 시에는 로그인 인증을 각 identity provider에서 해주기 때문에 기본적인 사용자 정보만 제공한다.

  • 위 로그인 창의 register 버튼을 눌러 회원가입을 하고 로그인 창에서 로그인을 하면 추가로 필요한 사용자 정보가 저장된다. with Github, with Google 로그인 시 문제가 발생한다.

➰ 이슈

우선 SSO 로그인 시 우리 프로젝트에 필요한 추가 회원 정보를 입력받기 위해 login-update-profile.ftl를 구현하였다. 하지만 Google, Github 로그인 시 사용자 프로필 업데이트 페이지가 나타나지 않고 바로 로그인 성공 창으로 이동했다.

  • SSO 로그인 시 Email 등 필요한 정보는 제공해주지 않아 위와 같이 저장되어 있다.

➰ 원인

GitHub 또는 Google과 같은 외부 IdP(Identity Provider)는 로그인 시 사용자 정보를 제공하고 Keycloak은 이를 그대로 사용한다. 따라서 기본적으로 Keycloak은 외부 IdP로부터 필요한 모든 정보를 가져와 사용자의 프로필을 업데이트한다.

Keycloak에서 사용자 프로필 업데이트 페이지가 나타나도록 하려면 인증 흐름에 Update Profile 액션을 추가해야 한다. 그러나 외부 IdP의 경우 이 액션이 자동으로 실행되지 않기 때문에 이슈가 발생했다.

*실제로 인증 흐름을 보면 Review Profile 이 Required로 설정되어 있다.

이를 해결하기 위해 Keycloak 내에서 인증 흐름을 수정해야 한다.


➰ 해결방법

  1. 인증 흐름에 Update Profile 액션을 추가하기 위해서 Keycloak 관리 페이지에 접속한다.
  1. Master Realm(적용하고자 하는 렐름) > Authentication > Flow details > first broker login 을 클릭한다.

  2. Review Profile 에서 오른쪽 톱니바퀴 모양 버튼을 클릭한다.

  1. Review Profile Config > Update Profile on First Login 을 Required -> On 으로 변경한다.


➰ 결과

설정을 변경하고 SSO 로그인을 하면 아래와 같이 사용자 프로필 업데이트 페이지가 뜨는 것을 확인할 수 있다.


➰ 참고

profile
Cloud Engineer & BackEnd Developer

2개의 댓글

comment-user-thumbnail
2024년 6월 19일

글이 이해가 너무 잘돼요! 잘 보고 갑니다 ~ 🙂 🙂

1개의 답글