본문 바로가기

WebApp/Oauth

Oauth - 절차(2)

1.RecourceServer의 승인

 

Resource Server는 Client가 등록된 Client가 맞는지 확인하기 위해서 Resource Owner을 통해서 Client에게 Authorization code를 전달합니다. 이 값을 받은 Client는 이 값과 Client secret의 값을 Resource Server로 전송해서 Client의 신원을 Resource Owner에게 증명합니다. 여기서는 이 과정을 다룹니다. 

 

 

이전 시간에는 사용자가 이런 작업을 하는것을 허용합니다 하고 승인버튼을 눌렀을때
그 정보가 리소스서버에 가서 id=1이라는 유저id를 가진 리소스오너는
리소스서버안의 스콥b와c에 대한 작업을 클라이언트 id 1번이 사용하도록 허용 했다 라는것
즉 리소스오너가 클라이언트에게 일부 작업을 허용을 해주었다라고 리소스서버가 인증해주었다 



자 그럼 이제 클라이언트인 우리는 일부 작업에 대한 리소스 오너에 대한 허락을 획득했으니까
 그다음에는 리소스 서버가 승인을 해줘야한다
 그럼 리소스 서버가 승인을 하기 위해서
바로 엑세스토큰을 발급하지 않고 그전에 절차가 하나 더 있다

3자간의 일이기 때문에 더 복잡한 것이다

그때 사용하는 임시 비밀번호가 있는데 그게 바로
authoirzation code이다 

바로 이 코드를 리소스 서버는 
리소스 오너에게 주소형식으로 전송한다     
이 주소에는 앞에 Location이 붙어있는데
이는 응답할때 헤더라는 값으로 Location이라는 값을주면 이걸 리다이렉션이라고 하는데
이게 무슨뜻이냐면 웹브라우져한테 https://client/callback?code=3이라는 주소로
이동하세요 라고 리소스 서버가 리소스 오너의 웹브라우져에게 명령하는 것이다
여기서 ?3이라는 값이 임시비밀번호인 authoirzation code : 3 인것이다



자그러면 리로스 오너의 브라우져는 저 로케이션 헤더값에 의해 서
리로스 오너의 사용자 그 사람이 인식하지도 못하게 은밀하게
클라이언트로 향하는 http://client/callback?code=3
이 주소로 이동을 하게 된다 그러면 저기있는 코드 3번이라는 값에 의해서
클라이언트는 어떤것을 알게되냐?
authorziaion code : 3이라는 값을 갖게 되는 것이다



그러면 이때의 클라이언트가 서버에게 저 authorziaion code : 3이라는 정보를 전송해서
엑세스 토큰을 발급하기 전 단계 까지 온상태이다

자 그러면 클라이언트는 리소스오너를 통허지 않고 리소스 서버에게 직접 접속한다
이런주소로!!

 

https://resource.server/token?

grant_type=authorization_code&(우리가 authorziaion code를 통해서 인증을 하고 있다는 뜻)
code=3&(클라이언트가 가진 authorziaion code의 코드값)
redirect_uri=https://client/callback&(리다이텍트 유알엘값도 전송)
client_id=1&(클라이언트 아이디 값과
client_secret=2(클라이언트 씨크릿값까지 전송)

즉 authorziaion code와 client_secret code를 결합해서 리로스 서버에게 전송한다

그러면 리소스서버는 받은 authorziaion code : 3을 보고서
자기가 가지고있는authorziaion code : 3과 일치하는지 확인하고

authorziaion code : 3은 클라이언트id 1번에게 발급한거였고
그 클라이언트id의 시크릿은 2번이었는데 
그러면 리소스서버는
이 클라이언트가 전송한 코드3 과 클라이언트id 1번과 클라이언트 씨크릿2번과
리다이렉트 유알엘의 값이 완전히 일치하는지를 확인하고
이정보들이 모두 일치한다면 그때 다음단계로 진행한다
그 다음단계란 바로 엑세스토큰을 발급하는 것이다.

'WebApp > Oauth' 카테고리의 다른 글

Oauth - 절차(3)  (0) 2020.11.10
Oauth - 용어 및 절차(1)  (0) 2020.11.10