-
[Spring] OAuth2스프링프레임워크/oauth2 2021. 5. 31. 20:52
OAuth 2.0 인증 방식
- 웹 사이트의 계정 인증에 타 서비스의 계정을 사용하는 인증 방식
구글 인증 방식 예시
구글 인증 페이지에 접속
https://accounts.google.com/o/oauth2?client_id=[OAuth 클라이언트 아이디]
&redirect_uri=https://www.test.com/auth/google/callback사용자가 구글 인증에 성공하면, 인증 페이지 접속 시 전달 된 리다이렉트 URI로 리다이렉트 되는데 다음과 같이 code라는 매개변수 정보를 추가해준다.
https://www.test.com/auth/google/callback?code=[코드 정보]
웹 사이트에서는 이 code라는 매개변수 값을 URL로부터 얻어온 후 이 code를 통해서 액세스 토큰을 발급 받는다.
https://www.googleapis.com/oauth2/token
POST Body 정보 : code=코드정보, client_id=클라이언트 아이디, client_secret=클라이언트 패스워드,
redirect_uri=https://www.test.com/auth/google/callback위 요청이 성공하면 구글 서버로 부터 아래와 같은 액세스 토큰 정보가 포함된 JSON 데이터를 리다이렉트 URI로 받아온다.
리다이렉트로 받아온 토큰 정보를 클라이언트에 리턴 가능
callback controller에서 수신한 데이터를 리턴 시 클라이언트에서 수신 가능
{ "access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74" }
OAuth 2.0 Grant Type
- 사용자가 인증 과정에 개입 O
- authorization_code
- authorization 서버 인증에 성공하면 code 값을 획득한다.
- code 값을 가지고 다시 access token을 요청한다.
- implicit
- authorization 서버 인증에 성공하면 바로 access token을 획득한다.
- authorization_code
- 사용자가 인증 과정에 개입 X
- password
- 사용자의 인증 정보를 클라이언트로부터 보호하는 authorization_code, implicit과 다르게 클라이언트가 이미 사용자의 인증 정보를 알고 있을 경우 사용
- POST /oauth/token 요청으로 바로 access token을 획득
- authorization_code와 implicit는 사용자의 인증 정보를 클라이언트로부터 보호하기 위한 목적이 있는데 클라이언트에서 이미 사용자의 인증 정보를 가지고 있어서 password 타입 사용
- client_credentials
- 클라이언트의 자격증명만으로 access token을 획득하는 방식
- password
참고 사이트
OAuth 2.0 동작 방식의 이해
OAuth 2.0(Open Authorization 2.0, OAuth2)은 인증을 위한 개방형 표준 프로토콜입니다. 이 프로토...
blog.naver.com
Google OAuth 인증을 이용한 애플리케이션 개발
Go oAuth2 애플리케이션 개발
www.joinc.co.kr
Spring Boot로 만드는 OAuth2 시스템 4
간단한 OAuth2 서버 만들어 보기 | 이번 포스팅부터 본격적으로 OAuth2 서버를 만들어 보겠다. 간단한 세팅을 시작으로 하나하나 점증적으로 확장하는 형태로 진행할 예정이다. (샘플 소스: https://
brunch.co.kr