OIDC
OpenID Connect
spring security로 구글 OAuth 설정을 하면
기본 scope로 "openid, profile, email"
위 3가지가 설정된다.
OAuth로 다 끝난 줄 알았는데 OIDC라고 뭐가 또 나온다.
짜증나니깐 간단하게 알아보자.
우선, OAuth를 짧게 복습해보자.
그러니깐 OAuth는
신뢰할 수 있으며 많은 서비스를 제공하는 사이트를 통해 인증/인가를 해결한다.
위 사이트의 예로 구글, 카카오를 들 수 있다.
따라서 OAuth를 통하면
구글, 카카오 외의 사이트가 사용자에게 권한을 허락받아
구글 캘린더, 카카오 게임처럼 구글, 카카오에 접근해 필요한 정보를 얻을 수 있다.
즉, 사용자에 대한 정보 조회 권한을 "인가"받는다.
이 정도면 openID 왜 필요한지 이해할 수 있다.
OAuth로 인증과 인가를 받을 수 있지만
사실은 "인가"를 위한 시스템이다.
사용자의 정보에 해당하는 "인증"에 필요한 정보를 얻으려면
구글과 카카오에 접근해서 권한이 유효한 지 확인받고 응답을 받는 통신을 해야한다.
따라서 OAuth 토큰 획득 과정에서 openID를 같이 받으면
이 정보 안에 사용자 정보를 포함시켜 "인증"까지도 챙기는 것이다.
정리
다시 말하지만,
OAuth만으로도 사용자 정보를 얻을 수 있다. 인증과 인가 모두 가능하다.
하지만 openID를 받으면 사용자에의 인증에 별다른 통신을 필요로 하지 않는다.
추가로 oauth의 동작과정에서 openID가 언제 넘어올 지 궁금할 수 있는데,
scope에 openid가 포함되어 있는 경우,
ID 토큰을 함께 받을 수 있는 Authorization code로 응답한다.
그러면 code로 token을 받을 때, ID 토큰도 함께 받는 것이다.
위 내용은 카카오 공식 API 문서로 확인할 수 있다.
중요한 점
현재 기준
kakao, google, okta가 아닌
naver, github은 openid를 지원하지 않는다.
참고자료
https://velog.io/@jakeseo_me/Oauth-2.0과-OpenID-Connect-프로토콜-정리
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#before-you-begin
'컴퓨터과학' 카테고리의 다른 글
[운영체제] 개요 (0) | 2023.10.25 |
---|---|
리눅스 (0) | 2023.09.17 |
OAuth 동작 원리 (0) | 2023.07.07 |
OAuth, 간단하게 알아보자 (0) | 2023.07.07 |
도커란? (0) | 2023.06.26 |