Repository navigation
SSO 로그인
#893
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
SSO 연동 Spring/Java 코드 예시
코드 분석
/sso/login:/sso/callback:/sso/logout:핵심 역할 분리(서비스 계층)
SsoService는 SSO 연동의 로직을 추상화하는 역할을 합니다.정리
세션(session)을 이용한 로그인 정보 보관
코드를 보면 사용자가 SSO 인증을 통해 userId를 받아오면,
ssoService.getUserDetailsByUserId(userId)를 호출하여 우리 서비스의 데이터베이스에서 사용자 상세 정보를 조회합니다. 이 정보는 User 객체에 담기게 되고, 이 User 객체를 loginService.createSession(request.getSession(), user);와 같은 방식으로 서버의 세션에 저장합니다.세션에 사용자 정보를 보관하는 이유는 다음과 같습니다.
상태 유지: HTTP는 상태를 유지하지 않는(stateless) 프로토콜입니다. 따라서 사용자가 웹사이트의 여러 페이지를 이동할 때마다 '로그인 상태'라는 정보를 유지하려면, 서버에 사용자 정보를 저장해둘 공간이 필요합니다. 세션은 이를 위한 가장 일반적인 방법입니다.
보안: 사용자 정보가 클라이언트(브라우저)에 노출되지 않고 서버에 안전하게 저장됩니다.
리다이렉트(Redirect)를 이용한 URL 연동
로그인 처리 과정에서는 리다이렉트가 중요한 역할을 합니다.
SSO 서버로 리다이렉트: 사용자가 처음 로그인할 때
return "redirect:" + ssoLoginUrl + "?returnUrl=" + returnUrl;코드를 통해 SSO 서버의 로그인 페이지로 사용자를 보냅니다. 이는 SSO 서버가 인증 처리를 전담하게 하는 것입니다.우리 서비스로 리다이렉트: SSO 로그인에 성공하면, SSO 서버는 returnUrl을 이용해 다시 우리 서비스의 특정 URL(예: /sso/callback)로 사용자를 돌려보냅니다.
최종 목적지로 리다이렉트: /sso/callback에서 로그인 세션 생성까지 완료되면,
return "redirect:/dashboard";코드를 통해 사용자가 최종적으로 보게 될 대시보드 페이지로 이동시킵니다.요약하자면, 세션은 사용자 로그인 상태를 서버에 보관하는 저장소이고, 리다이렉트는 로그인 과정에서 사용자를 여러 URL로 이동시키는 방법이라고 할 수 있습니다. 이 두 가지를 결합하여 안전하고 유연한 SSO 로그인 기능을 구현하게 됩니다.
All reactions