OIDC

OpenID Connect

 

spring security로 구글 OAuth 설정을 하면

기본 scope로 "openid, profile, email"

위 3가지가 설정된다.

spring security에서 기본으로 제공하는 구글 설정

 

OAuth로 다 끝난 줄 알았는데 OIDC라고 뭐가 또 나온다.

짜증나니깐 간단하게 알아보자.

 

우선, OAuth를 짧게 복습해보자.

 

 

OAuth, 간단하게 알아보자

OAuth, 간단하게 알아보자 Open Authorization 대형 사이트로 대신 로그인하는 것. 대부분 잘 알려진 사이트로 로그인하는 것으로 알고 있을 것이다. 사실은 외부사이트에서 제공하는 API로 사용자의 정

jujemu.tistory.com

 

 

그러니깐 OAuth는

신뢰할 수 있으며 많은 서비스를 제공하는 사이트를 통해 인증/인가를 해결한다.

위 사이트의 예로 구글, 카카오를 들 수 있다.

 

따라서 OAuth를 통하면

구글, 카카오 외의 사이트가 사용자에게 권한을 허락받아

구글 캘린더, 카카오 게임처럼 구글, 카카오에 접근해 필요한 정보를 얻을 수 있다.

즉, 사용자에 대한 정보 조회 권한을 "인가"받는다.

 

이 정도면 openID 왜 필요한지 이해할 수 있다.

OAuth로 인증과 인가를 받을 수 있지만

사실은 "인가"를 위한 시스템이다.

사용자의 정보에 해당하는 "인증"에 필요한 정보를 얻으려면

구글과 카카오에 접근해서 권한이 유효한 지 확인받고 응답을 받는 통신을 해야한다.

따라서 OAuth 토큰 획득 과정에서 openID를 같이 받으면

이 정보 안에 사용자 정보를 포함시켜 "인증"까지도 챙기는 것이다.

 

정리

다시 말하지만,

OAuth만으로도 사용자 정보를 얻을 수 있다. 인증과 인가 모두 가능하다.

하지만 openID를 받으면 사용자에의 인증에 별다른 통신을 필요로 하지 않는다.

 

추가로 oauth의 동작과정에서 openID가 언제 넘어올 지 궁금할 수 있는데,

scope에 openid가 포함되어 있는 경우,

ID 토큰을 함께 받을 수  있는 Authorization code로 응답한다.

그러면 code로 token을 받을 때, ID 토큰도 함께 받는 것이다.

위 내용은 카카오 공식 API 문서로 확인할 수 있다.

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#before-you-begin

 

중요한 점

현재 기준

kakao, google, okta가 아닌

naver, github은 openid를 지원하지 않는다.

 

참고자료

https://velog.io/@jakeseo_me/Oauth-2.0과-OpenID-Connect-프로토콜-정리

 

Oauth 2.0과 OpenID Connect 프로토콜 정리

https://medium.com/better-programming/the-complete-guide-to-oauth-2-0-and-openid-connect-protocols-35ebc1cbc11a 이 글을 번역한 내용입니다.인증과 권한 관리를 위해 가장 널

velog.io

 

https://hudi.blog/open-id/

 

OpenID(OIDC) 개념과 동작원리

등장배경 이전에는 사용자 데이터를 서비스에서 직접 관리하는 경우가 대다수였다. 하지만 해킹, 피싱등으로 인한 개인정보 유출 사건이 끊임없이 발생하자, 서비스에서 직접 사용자 데이터를

hudi.blog

 

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#before-you-begin

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

'컴퓨터과학' 카테고리의 다른 글

[운영체제] 개요  (0) 2023.10.25
리눅스  (0) 2023.09.17
OAuth 동작 원리  (0) 2023.07.07
OAuth, 간단하게 알아보자  (0) 2023.07.07
도커란?  (0) 2023.06.26