OpenID Connect (OIDC)
OAuth는 인가(Authorization)를 위한 프로토콜이지, 사용자의 신원 확인(로그인) 기능은 없었습니다. 그 공백을 채우기 위해 등장한 것이 바로 OpenID Connect (OIDC)입니다.
이 글에서는 OIDC가 어떤 배경에서 나왔고, OAuth와 어떤 관계인지, 실제로 어떤 정보를 제공하는지 정리합니다.
1. OpenID Connect란?
OpenID Connect (OIDC)는 OAuth 2.0 위에 구축된 인증(Authentication) 프로토콜입니다.
- OIDC는 사용자의 신원을 확인하고, 그 정보를 표준화된 방식으로 전달해주는 역할을 합니다.
- OAuth는 접근 권한을 다루는 반면, OIDC는 누가 로그인했는지를 알려줍니다.
2. OIDC가 OAuth에 더한 것
항목 | OAuth 2.0 | OpenID Connect |
목적 | 권한 부여 (인가) | 인증 (로그인) |
토큰 | Access Token | Access Token + ID Token |
사용자 정보 | X | ID Token + UserInfo |
로그인 기능 | ❌ 없음 | ✅ 있음 |
- OIDC가 추가한 핵심 요소는 ID Token입니다.
ID Token이란?
사용자 정보가 들어 있는 JWT(JSON Web Token) 입니다.
예를 들어, 다음과 같은 정보를 포함할 수 있어요.
{
"iss": "https://accounts.google.com",
"sub": "1122334455",
"name": "홍길동",
"email": "gildong@example.com",
"picture": "https://photo.com/avatar.jpg",
"iat": 1712900000,
"exp": 1712903600
}
- sub : 사용자 고유 ID
- iss : 발급자(Provider)
- iat, exp : 발급 시간, 만료 시간
3. OIDC 흐름 요약
sequenceDiagram
participant User
participant Client(App)
participant AuthServer(OIDC Provider)
User->>Client: 로그인 시도
Client->>AuthServer: 인증 요청
AuthServer->>User: 로그인 화면
User->>AuthServer: 계정 정보 입력
AuthServer->>Client: Access Token + ID Token 반환
Client->>Client: ID Token으로 사용자 인증
4. 왜 OAuth만으로는 부족했을까?
- OAuth는 "이 앱이 이 데이터에 접근해도 될까?"만 다룹니다.
- 하지만 "이 사용자가 누구인지", "로그인했는지"는 알려주지 않죠.
- 그래서 등장한 것이 OIDC!
- OAuth의 인가 메커니즘은 유지하면서, 거기에 로그인 기능까지 붙여준 것입니다.
5. 대표적인 OIDC Provider들
- Microsoft (Azure AD)
- Apple ID
- Auth0
- Okta
6. 마무리
- OAuth 2.0 : 권한 위임 (인가)
- OIDC : 신원 확인 (인증)
OIDC는 OAuth를 확장해서 로그인까지 가능하게 만든 표준 인증 프로토콜입니다. 따라서, 우리가 흔히 말하는 “구글로 로그인하기”, “깃허브로 로그인하기”는 실제로는 OAuth + OIDC 조합인 경우가 많습니다.
함께 보면 좋은 자료
블로그 글 :
[OAuth] 로그인 없이 로그인하기
OAuth (Open Authorization) 현대 웹서비스에서 흔히 볼 수 있는 Google로 로그인, Kakao로 시작하기 같은 기능은 어떻게 작동할까요? 바로 이럴 때 사용하는 기술이 OAuth(Open Authorization)입니다. 이 글에서는
dachaes-devlogs.tistory.com
[OAuth] 로그인 기술이 아니다? OAuth와 인증의 관계 정리
OAuth (Open Authorization) “구글 로그인은 OAuth 기술로 구현되니까, OAuth는 로그인 인증 프로토콜이다?” 많은 개발자들이 이렇게 오해합니다.하지만 진실은 조금 다릅니다. OAuth는 로그인(Authenticatio
dachaes-devlogs.tistory.com
'시스템 지식 > 보안' 카테고리의 다른 글
[JWT의 구조] Header, Payload, Signature의 역할과 의미 (0) | 2025.04.14 |
---|---|
[JWT] 인증 시스템의 핵심 (0) | 2025.04.14 |
[OAuth] OAuth는 인증 기술이 아니다? (0) | 2025.04.12 |
[OAuth] 로그인 없이 로그인하기 (0) | 2025.04.12 |
[CSRF와 XSS] 웹 보안의 핵심 (0) | 2025.04.11 |