[Section 4] OAuth 2 인증

Kim·2022년 11월 28일
0

Boot Camp

목록 보기
56/64

Frontend와 Backend 간의 OAuth 2 인증 처리 흐름

[이미지 출처] Hjjju.log

  1. Resource Owner가 웹 브라우저에서 Google 로그인 링크를 클릭한다.

  2. Frontend 애플리케이션에서 Backend 애플리케이션의 http://localhost:8080/oauth2/authorization/google로 request를 전송한다.
    이 URI의 requet는 OAuth2LoginAuthenticationFilter가 처리합니다.

  1. Google의 로그인 화면을 요청하는 URI로 Redirect한다.
    🔅이때 Authorization Server가 Backend 애플리케이션 쪽으로 Authorization Code를 전송할 Redirect URI(http://localhost:8080/login/oauth2/code/google)를 쿼리 파라미터로 전달한다. Redirect URI는 Spring Security가 내부적으로 제공한다.

  2. Google 로그인 화면을 오픈한다.

  3. Resource Owner가 Goole 로그인 인증 정보를 입력해서 로그인을 수행한다.

  1. 로그인에 성공하면 3에서 전달한 Backend Redirect URI(http://localhost:8080/login/oauth2/code/google)로 Authorization Code를 요청한다.

  2. Authorization Server가 Backend 애플리케이션에게 Authorization Code를 응답으로 전송한다.

  3. Backend 애플리케이션이 Authorization Server에 Access Token을 요청한다.

  4. Authorization Server가 Backend 애플리케이션에게 Access Token을 응답으로 전송한다.
    🔅Access Token은 Google Resource Server에게 Resource를 요청하는 용도로 사용된다.

  5. Backend 애플리케이션이 Resource Server에 User Info를 요청한다.
    🔅User Info는 Resource Owner에 대한 이메일 주소, 프로필 정보 등을 의미한다.

  6. Resource Server가 Backend 애플리케이션에 User Info를 응답으로 전송한다.

  7. Backend 애플리케이션은 JWT로 구성된 Access Token과 Refresh Token을 생성한 후,
    Frondend 애플리케이션에 JWT(Access Token과 Refresh Token)를 전달하기 위해 Frondend 애플리케이션(http://localhost?access_token={jwt-access-token}&refresh_token={jwt-refresh-token})으로 Redirect한다.

6부터 11까지는 Spring Security에서 내부적으로 알아서 처리해주기 때문에 기본적으로는 건드릴 필요가 없다.

0개의 댓글