OAuth2
란?<aside>
💡 OAuth2
는 OAuth
의 알려진 보안 문제 등을 개선한 버전임
</aside>
이름 | 설명 |
---|---|
Authentication | (인증) 접근 자격이 있는지 검증하는 단계 |
Authorization | (인가) 자원에 접근할 권한을 부여하는 것이며, 인가가 완료되면 리소스 접근 권한이 담긴 Access Token 이 클라이언트에게 부여 |
Access Token | 리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용하는 토큰 |
Refresh Token | Access Token 만료 시 이를 갱신하기 위한 용도로 사용하는 토큰 |
이름 | 설명 |
---|---|
Resource Owner | 웹 서비스를 이용하려는 유저, 자원(개인정보)을 소유하는 자, 사용자 |
Client | 자사 또는 개인이 만든 애플리케이션 서버 |
Resource Server | 사용자의 개인정보를 가지고있는 애플리케이션 (Google, Facebook, Kakao 등) 회사 서버 |
Client
는 Token
을 이 서버로 넘겨 개인정보를 응답 받을 수 있음 |
| Authorization Server | 권한을 부여(인증에 사용할 아이템을 제공주는)해주는 서버
사용자
는 이 서버로 ID, PW
를 넘겨 Authorization Code
를 발급 받을 수 있음
Client
는 이 서버로 Authorization Code
을 넘겨 Token
을 받급 받을 수 있음 |
Authorization Code Grant
(권한 부여 코드 승인 방식) : OAuth2
에서 가장 기본이 되는 방식이며, SNS 로그인 기능에서 사용되는 방식
<Authorization Code Grant 플로우>
response_type=code
로 요청하게 되면 클라이언트는 Authorization Server
에서 제공하는 로그인 페이지 이동Authorization Server
는 접근 권한 요청시에 받은 redirect_url
로 Authorization Code
를 전달Client
에서 전달받은 Authorization Code
로 Access Token
요청Client
에서 전달받은 Access Token
으로 Resource Server
에 자원 요청이외에도 다른 방식이 존재하지만 여기서 설명하지 않겠다.
Implicit Grant
: 암묵적 승인 방식Client Credentials Grant
: 클라이언트 자격 증명 방식Resource Owner Password Credentials Grant
: 자원 소유자 자격 증명 방식Spring Security
원리DelegatingProxyChain
<DelegatingFilterProxy
의 역할>