인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근권한을 부여할수 있는 공통적인 수단. 접근 위임을 위한 개방형 표준.
ex) Authorization Code Grant(일반적인 소셜로그인)
A 사이트 접근 -> 페이스북 로그인 선택 -> 페이스북에 로그인/패스워드 입력후 인증 -> A사이트에 접근가능한 토큰 발급 -> 인증완료
Resource Owner : 사용자 - 유저
Resource Server: REST API 서버 - 페이스북,트위터 등 접근하고자하는 서버
Authorization Server : 인증서버
Client: 써드파티 어플리케이션 - 우리의 애플리케이션
Access Token 과 Refresh Token
Access Token
요청절차를 정상적으로 종료한 클라이언트에게 발급
자원에 접근할때 권한 확인용으로 사용
클라이언트에 발급된 권한의 대표(문자열 형태)
계정인증에 필요한 형태들을 표현
리소스 서버는 여러가지 인증방식에 대응 하지 않아도 권한을 확인할수 있게 해줌.
제한 시간이 있음.
Refresh Token
Access token을 새로 발급받기위해 필요.
Access token 발급받을때 같이 발급.
token 형태는 Access Token과 동일(문자열)
클라이언트 종류
Confidential Client: 웹서버가 API를 호출하는 경우 등과 같이 client증명서(client_secret)를 안전하게 보관할 수 있는 Client
Public Client: 브라우저 기반 애플리케이션이나 모바일 애플리케이션 같이 client 증명서를 안전하게 보관할수 없는 Client, 이런경우 redirect_uri를 통해 client 인증
oauth2의 다양한 인증방법
OAuth2 승인 방식의 종류
Authorization Code Grant Type : 권한 부여 코드 승인 타입
클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용. 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식.
Implicit Grant Type : 암시적 승인
권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식.
Resource Owner Password Credentials Grant Type : 리소스 소유자 암호 자격 증명 타입
클라이언트가 암호를 사용하여 엑세스 토큰에 대한 사용자의 자격 증명을 교환.
Client Credentials Grant Type : 클라이언트 자격 증명 타입
클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식.
Authorization Code Grant Type : 권한 부여 코드 승인 타입
(1) 클라이언트가 파리미터러 클라이언트 ID, 리다이렉트 URI, 응답 타입을 code로 지정하여 권한 서버에 전달. 정상적으로 인증이 되면 권한 코드 부여 코드를 클라이언트에게 전달.
응답 타입은 code, token 이 사용 가능.
응답 타입이 token 일 경우 암시적 승인 타입에 해당.
(2) 성공적으로 권한 부여 코드를 받은 클라이언트는 권한 부여 코드를 사용하여 엑세스 토큰을 권한 서버에 추가로 요청. 이때 필요한 파라미터는 클라이언트 ID, 클라이언트 비밀번호, 리다이렉트 URI, 인증 타입.
(3) 마지막으로 받은 엑세스 토큰을 사용하여 리소스 서버에 사용자의 데이터를 전달.
Implicit Grant Type
(1) 클라이언트가 파리미터러 클라이언트 ID, 리다이렉트 URI, 응답 타입을 code로 지정하여 권한 서버에 전달. 정상적으로 인증이 되면 권한 코드 부여 코드를 클라이언트에게 전달.
응답 타입은 code, token 이 사용 가능.
응답 타입이 token 일 경우 암시적 승인 타입에 해당.
(2) 응답 해준 Access Token 이 유효한지 검증 요청.
(3) 요청 받은 Access Token 정보에 대한 검증에 대한 응답값을 리턴.
(4) 유효한 Access Token 기반으로 Resource Server와 통신.
Resource Owner Password Credentials Grant Type
(1) 인증을 진행합니다. 대부분 ID, Password를 통해서 자격 증명이 진행.
(2) 넘겨 받은 정보기반으로 권한 서버에 Access Token 정보를 요청.
(3) Access Token 정보를 응답 받는다. 이때 Refresh Token 정보도 넘겨 줄 수도 있다.
(4) Access Token 기반으로 Resource Server와 통신.
Client Credentials Grant Type
(1) Access Token 정보를 요청.
(3) Access Token 정보를 응답. 이때 Refresh Token 정보는 응답하지 않는 것을 권장. 별다른 인증 절차가 없기 때문에 Refresh Token 까지 넘기지 않는 것....
Oauth2
OAuth(Open Authorization)란?
인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근권한을 부여할수 있는 공통적인 수단. 접근 위임을 위한 개방형 표준. ex) Authorization Code Grant(일반적인 소셜로그인) A 사이트 접근 -> 페이스북 로그인 선택 -> 페이스북에 로그인/패스워드 입력후 인증 -> A사이트에 접근가능한 토큰 발급 -> 인증완료
Access Token 과 Refresh Token
Access Token
Refresh Token
클라이언트 종류
oauth2의 다양한 인증방법
Authorization Code Grant Type : 권한 부여 코드 승인 타입
Implicit Grant Type
Resource Owner Password Credentials Grant Type
Client Credentials Grant Type