클라이언트 → 은행 으로 Oauth 인증 코드 발급 요청
: request body에는 사용자의 client_id, redirect_url , user_id , password 를 담아서 보내준다.
은행 서버는 등록된 client_id의 redirect_url가 맞는지 검증한다.
사용자의 id, password가 맞는지 검증한다.
2가지가 검증되면 redirect_url로 code를 생성하여 보내준다.
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를 담아서 요청을 보낸다.
client_id의 redirect_url가 맞는지 검증한다.