반응형
안녕하세요 디벨로펄입니다.
회사에서 front 코드를 jsp에서 nextjs로 변경하기로 결정되었습니다.
약 4년 쯤 전 시작한 프로젝트에서 jsp를 사용하게 된 것이 조금 아쉽지만
그래도, 아직 바꾸기에 늦지 않았네요
기존 프로젝트 구조 및 변경점
- 기존 프로젝트
- Backend : Spring Boot
- FrontEnd : jsp
- SSO, SSL 적용
- 변경 프로젝트
- Backend : Spring Boot
- FrontEnd : nextjs
- SSO, SSL 적용 - 이슈
문제점
기존에는 하나의 server로 진행돼서 인증을 요청하고 redirect 되는 경로가 일치했습니다.
하지만, front와 backend를 분리하면서 redirect되는 경로가 일치하지 않는 문제가 발생합니다.
- 이는 nginx의 프록시를 활용하여 해결합니다.
SAML 인증 과정
- 사용자의 browser에서 Service Provider(개발한 BackEnd서버)로 sso인증 api를 호출합니다.
- SP에서 browser로 idp로 향하는 redirect url을 응답합니다.
- idp는 로그인 화면을 사용자에게 보여주고, 사용자는 로그인을 진행합니다.
- 로그인이 완료되면, _SAML Response_와 함께 Response를 처리하는 api(SP)를 호출합니다.
- SP에서는 인증된 Response를 받아서 로그인 처리를 해줍니다.
- 저는 Session에 로그인 정보를 저장했습니다.
- SP에서 Client에 FrontEnd화면으로 redirect 합니다.
- 이후 요청 부터는 session에 설정된 로그인 정보를 활용합니다.
추가 이슈점
- nginx에서 SAML Response할 때
- 301 : 영구적 Redirect로 GET요청으로 변경됨
- 307 : 일시적 Redriect로 기존 요청 정보 그대로 가지고감
배운점
- nginx 사용 방법 - redirect, 서버 등등
- 서비스 구조가 복잡해져서 오히려 더 상세히 알게됨
- 프로토콜의 중요성 - 301, 307
- SAML을 인증 방법 - 요새는 OAuth를 주로 사용하지만...
여러모로 의미있었다.
이제 다른 일 해야지...
반응형
댓글