Spring Security (직접 로그인 URI 구현의 경우)
제 3자 Client(내 웹 서비스)가 Google, Naver, Kakao와 같은 다양한 플랫폼의 특정한 사용자 데이터에 접근하기 위해 사용자의 접근 권한을 위임 받을 수 있는 표준 프로토콜 즉, 우리의 서비스를 이용하는 유저의 타사 플랫폼 정보에 접근하기 위해서 권한을 타사 플랫폼으로부터 위임 받는 것.
내가 정리한 내용
사용자)가 “내 구글 프로필 정보 가져가도 돼”라고 승인하면,Authorization Code를 발행하여 Client(내 서비스)에게 주고,나)는 Authorization Code를 들고 다시 Authorization Server로 가서 AccessToken을 들고옴.구글)에 가서 AccessToken을 주고 데이터를 요청.구글)은 AccessToken이 유효한지 확인하고 사용자의 데이터를 보내준다.| 구분 | 설명 |
|---|---|
| Resource Owner (사용자) | 웹 서비스를 이용하려는 유저, 자원(개인정보)을 소유하는 자, 사용자 |
| Client (나) | 애플리케이션 서버. Resource Server에게 필요한 자원을 요청하고 나에게 응답해주기에 내가 클라이언트가 된다. |
| Authorization Server | • 권한을 부여해주는 서버 (인증에 사용할 아이템을 제공해줌) |
| • Resource Owner는 이 서버로 ID, PW를 넘겨 Authorization Code를 발급 받아 내가 설정한 경로로 돌아온다. | |
| • Client는 이 서버로 Authorization Code를 넘겨 Token을 발급 받을 수 있다. | |
| Resource Server | 사용자의 개인정보를 가지고 있는 애플리케이션(구글, 네이버, 카카오) 서버. |
| Client는 AccessToken을 이 서버로 넘겨 개인 정보를 응답 받을 수 있다. | |
| Access Token | 자원에 대한 접근 권한을 Resource Owner가 인가하였음을 나타내는 자격 증명 |
| Refresh Token | • Client는 Authorization Server로 부터 Access Token(짧은 만료 시간)과 Refresh Token(긴 만료 시간)을 함께 부여 받는다. |
| • Access Token가 만료되면 사용자는 로그인을 다시 시도해야 한다. 그러나 Refresh Token이 있다면, Refresh Token을 통해 Access Token을 재발급 받아 재 로그인 할 필요가 없게 끔 한다. |
Client(내 서비스)는 먼저 Resource Server(구글)에 등록이 되어야 한다. (구글 개발자 콘솔에서 프로젝트를 생성하고, Client ID와 Client Secret을 발급받는 과정)
(그래야지만, 구글이 인증된 회원인지 파악하고, 이후 진행이 가능하다.)
이때, Redirect URI는 Resource Owner가 OAuth 2.0 서비스에서 인증을 마치고, Resource Owner를 리디렉션 시킬 위치이다. (ex) http://localhost:8080/login/oauth2/code/google)