개요 및 특징
- OpenID Connect 1.0은 OAuth 2.0 프로토콜 위에 구축된 ID 계층으로 OAuth 2.0을 확장하여 인증 방식을 표준화 한 OAuth 2.0 기반의 인증 프로토콜이다
- scope 지정 시 “openid” 를 포함하면 OpenID Connect 사용이 가능하며 인증에 대한 정보는 ID 토큰 (ID Token )이라고 하는 JSON 웹 토큰(JWT) 으로 반환된다
- OpenID Connect는 클라이언트가 사용자 ID를 확인할 수 있게 하는 보안 토큰인 ID Token 제공한다
아래 사진과 같이 scope 에 openid를 넣어야 OIDC가 활성화 된다.
Authorization Code, Implicit, password Credentials, Client Credentials 전부 scope에 openid를 넣으면 된다.

Oauth 2.0, OIDC 비교

Oauth2.0
사용 목적 : Oauth2.0프로토콜은 권한(인가) 획득하기 위해서 사용한다.
예를들어서 네이버에서 페이스북, 인스타그램의 사진을 가지고오고 싶은경우 (가장 많이 사용하는 Authorization Code Flow로 설명)
- 네이버에 회원가입후 로그인을 한다.
- 네이버에서 제공하는 페이스북, 인스타그램의 사진 가져오기 기능을 사용한다
- 네이버에서는 페이스북, 인스타그램의 권한승인을 받는 페이지로 redirection 시킨다.
- 사용자가 페이스북, 인스타그램에서 자신의 데이터를 접근할수 있도록 허용한다.
- 페이스북, 인스타그램에서 사용자의 데이터에 접근할 수 있는 Access Token을 발급한다.
- 네이버는 발급받은 Access Token을 가지고 페이스북,인스타그램 API 를 호출하여 사진데이터를 가져온다.
핵심 개념
- OAuth 2.0의 역할:
사용자(당신)의 민감한 로그인 정보(아이디/비밀번호)를 공유하지 않고도 naver.com이 페이스북, 인스타그램의 데이터를 가져올 수 있도록 안전한 방식으로 권한을 위임한다. - Access Token:
페이스북, 인스타그램이 발급하는 "권한 증명서"로, 이를 통해 naver.com은 정해진 범위 내에서만 사용자의 데이터를 가져올 수 있다.
OIDC
사용 목적 : OIDC는 인증을 위해서 사용한다.
예를들어서 네이버에서 구글, 카카오로 로그인하고 싶은경우(가장 많이 사용하는 Authorization Code Flow로 설명)
- 네이버에 접속후 구글, 카카오로 로그인 버튼 클릭
- 네이버는 구글, 카카오의 OIDC Authorization Endpoint로 Redirection 한다.
- 구글, 카카오의 로그인 화면에서 계정과 비밀번호를 입력 후 scope(email, 이름, 등등...)에 접근할 수 있도록 승인한다.
- 승인이 되면 Authorization Code를 발급하고 2번에서 Redirection 할때 파라미터로 넘긴 인증후 redirection URL로 redirection 시킨다.
- 네이버 서버에서는 4번에서 받은 Authorization Code를 가지고 구글, 카카오의 Token Endpoint에 요청을 보내서 AccessToken, ID Token을 발급 받는다.
- 네이버는 ID Token을 통해서 사용자의 정보를통해 네이버 계정을 생성하거나 세션을 생성한다.
- 이과정을 통해 변도의 회원가입 절차 없이 사용자를 인증한다.
AccessToken : 사용자의 구글,카카오 리소스에 접근하기 위한 토큰
ID Token : 사용자의 인증 정보가 포함된 JWT(위 과정중 3번 과정에 scope 에 명시한 데이터들이 들어있다)
OIDC를 사용해야하는 이유
- "구글 로그인"과 같은 소셜 로그인을 구현할 때.
- 사용자의 인증을 간소화하고 중앙화된 인증 제공.
- OAuth 2.0으로 부족했던 인증(Authentication) 문제를 해결.
OIDC vs OAuth2.0
- OIDC는 주로 사용자 인증(로그인)에 초점을 맞춘 프로토콜
- 예: 구글 계정을 통해 네이버에 로그인.
- OAuth 2.0은 권한 부여에 초점을 맞춘 프로토콜
- 예: 네이버가 페이스북에서 사용자의 사진 데이터를 가져오는 것.
OIDC의 장점
- 회원가입 없이 간편한 로그인:
사용자는 별도로 회원가입하지 않아도 구글 계정을 통해 네이버에 로그인할 수 있다. - ID Token을 통한 사용자 정보 제공:
ID Token에 사용자의 기본 정보(예: 이름, 이메일)가 포함되어 있어 추가적인 API 호출 없이 사용자 정보를 가져올 수 있다 - 표준 프로토콜 사용:
OIDC는 전 세계적으로 사용되는 표준 프로토콜로, 다양한 서비스 간 호환이 쉽다.
OpenID Connect Discovery 1.0 Provider Metadata
OpenID Connect 를 사용하기 위해 필요한 모든 엔드 포인트 및 공개 키 위치 정보를 포함 하여 OpenID 공급자의 구성에 대한 클레임 집합을 나타낸다.
검색 문서 경로 : ~/.well-known/openid-configuration
keycloak의 경우
http://localhost:8080/realms/렐름명/.well-known/openid-configuration

References 및 사진 출처
정수원 스프링 시큐리티 OAuth2
'Spring > Oauth2' 카테고리의 다른 글
| OIDC Scope (0) | 2025.01.17 |
|---|---|
| ID Token (0) | 2025.01.17 |
| Oauth2 PKCE-enhanced Authorization Code Grant (0) | 2025.01.12 |
| Oauth2 Refresh Token Grant (0) | 2025.01.12 |
| Oauth2 Client Credentials Grant (0) | 2025.01.12 |