OAuth 공부 다시 제대로
OKTA홈페이지
OAuth flow이해하기 + flow만들기
질문
Auth와 OAuth의 차이는?
firebase OAuth 서버가 가능한가?
firebase가 제공하는 인증기능이 무엇인가? OAuth와 다른 것인가
[OAuth 2.0]
클라이언트가 서버에 등록하기 위한 필수 요소 세 가지는 client ID, client secret, authorized redirect URIs이다. 다시 말해, 클라이언트를 서버에 등록을 하게 되면 client ID와 client secret을 얻게 된다. client ID는 우리가 만든 어플리케이션의 식별자 ID이며, secret은 그에 대한 비밀번호이고, redirectg URIs는 리소스 서버가 권한을 부여하는 과정에서 authorized code라는 것을 전달하는데, 이 코드를 이 URI로 전달한다.
먼저 owner가 client에 접근하게 되면, client는 server의 기능이 필요하기 때문에 server에 먼저 로그인해야 된다는 화면을 띄워준다. 이때 ‘구글로 로그인’ 버튼의 주소는 [http://서버 주소&scope=b,c&client_ID=1&redirect_uri=리다이렉트 주소]의 형식으로 되어있다.
owner가 이 버튼을 누르면 server로 접속하게 된다. server에 로그인을 성공하게 되면 주소의 client id 값이 server에 등록된 client id값과 동일한지 확인하고, redirect URI도 확인한 후 모두 같으면 client에서 요청한 scope를 제공하는데 동의할 것인지의 여부를 owner에게 묻는다.
owner가 허용하게되면 허용했다는 메시지를 server에게 전송하고, server가 전송을 받으면 client에서 요청한 기능(scope)를 server에 저장한다.
scope를 server에 저장하고, 정보가 저장된 authorized code를 발급한다. 이 authorized code를 owner에게 전송하는데, 헤더값으로 [location:https://redirect_uri?authorized_code=3]을 준다. 이를 통해 owner를 redirect 시킬 수 있다. 이를 통해 client가 authorized code=3이라는 것을 알 수 있게 된다.
client가 authorization code를 획득하면 resource server로 정보를 전송하는데 형식은 다음과 같다.
[https://서버주소/?grant_type=authorization_code&code=3&redirect_uri=https://리다이렉트주소&client_id=1&client_secret=2]
authorization code와 client secret 두 개를 결합해서 resource server에 전송한다. client로 부터 받은 authorization code를 확인한 후 server에서 가지고 있는 코드 정보를 확인하고, 모든 정보가 일치하면 authorization code를 삭제하고 access token을 client에 발급해준다.
client ID는 user ID가 아니라 어플리케이션의 식별자 ID이다.
등록 과정은 developer에서 client를 등록하는 과정을 말한다(ID와 secret을 server에 저장함).
리다이렉트 주소는 client(어플리케이션) 주소이다. call back.
header에 location을 추가하면 설정한 주소로 페이지 이동이 가능하다.
[전체적인 OAuth 흐름]
Auth와 OAuth의 차이는? 토큰을 사용하느냐 사용하지 않느냐의 차이이다. 보안을 강화하기 위해 나온 방식이 OAuth이다. Auth는 Authentication(인증), OAuth는 Authorization이다(권한).
OAuth 서버라는 것이 무엇을 의미하는 것인가? 말 그대로 oauth2.0을 구현하는 것을 말하는 것 같다.
firebase OAuth 서버가 가능한가?
firebase가 제공하는 인증기능이 무엇인가? OAuth와 다른 것인가
'동계현장실습' 카테고리의 다른 글
19.02.13 수요일 (0) | 2019.02.13 |
---|---|
19.02.12 화요일 (0) | 2019.02.13 |
19.01.31 목요일 (0) | 2019.01.31 |
19.01.30 수요일 (0) | 2019.01.30 |
19.01.29 화요일 (0) | 2019.01.30 |