은행 로그인 (첫 로그인 시)

클라이언트 → 은행 으로 Oauth 인증 코드 발급 요청

: request body에는 사용자의 client_id, redirect_url , user_id , password 를 담아서 보내준다.

  1. 은행 서버는 등록된 client_idredirect_url가 맞는지 검증한다.

  2. 사용자의 id, password가 맞는지 검증한다.

    1. 유저가 인증되면 uuid를 찾아 놓는다.
  3. 2가지가 검증되면 redirect_url로 code를 생성하여 보내준다.

    1. 이때, code는 기존에 정한대로 랜덤한 값 12자로 생성한다.
  4. code가 담긴 키로 client_id, uuid를 redis에 저장해놓는다. (5분 정도로 짧게)

ex )

<clientId: {code} , clientId>

<memberUuid:{code}, memberUuid> 형식으로 저장

→ 이로써 악성 유저가 client_id, redirect_url 을 알더라도 코드는 redirect_url로 전송되므로 인증 코드를 받을 수 없다.

클라이언트 → 여행으로 인증 코드 전송

: 클라이언트가 여행 서버로 발급 받은 인증 코드를 전송해준다.

여행 → 은행으로 은행 access token 발급 요청

: 쿼리 파라미터로 code , client_id, redirect_url 을 전달하고, request body에 secret_key를 담아서 요청을 보낸다.

  1. code 로 저장되어있는 client_id와 요청받은 client_id와 일치한지 검사한다.
  2. 등록된 client_idredirect_url가 맞는지 검증한다.