OAuth2 란?
in Programming on Spring
OAuth 2.0은 다양한 플랫폼 환경에서 권한 부여를 위한 산업 표준 프로토콜. 제3의 앱이 자원의 소유자인 서비스이용자를 대신하여 서비스를 요청할 수 있도록 자원 접근 권한을 위임하는 방법.
- resource owner 사용자. (ex. board를 사용하는 사용자)
- client 권한을 받아 사용하려는 제 3의 앱. (ex. board)
- authorization Server 인증하고 토큰을 발행하는 주체 (ex. kakao 인증api 서버 )
- resource server filter 기능(토큰이 맞는지 확인) (ex. kakao 토큰을 저장하고있는 서버 )
Grant Type
- Authorization Code Grant Type : 가장 일반적
- Implicit Grant Type
- Resource Owner Password Credential GrantType
- Client Credential Grant Type
Flow (Authorization Code Grant Type)
- 기존 계정과 SNS 계정 연동 요청
- 요청 SNS 로그인 페이지 출력 (Client ID 값이 포함된 로그인 페이지)
- ID/PW 를 통해 SNS 계정에 로그인
- 로그인 성공 시 인증 서버로부터 Authorization code를 발급 받음 (Authentication Server -> 사용자)
- 발급 받은 code 값과 state 값을 Client 서버로 전송 (사용자 -> Client Server)
- code 값과 state 값 검증 후 Client 서버에 로그인 되어있는 계정과 SNS 계정이 연동됨
AccessToken과 Refresh Token
Access Token
권한확인용으로 사용되는 토큰. 만료기간이 짧다. (-> 탈취당해도 만료가 금방되기때문에 보안강화)
Refresh Token
Access Token 만료시에 Refresh Token으로 다시 새 Access Token을 발급받을수있다.