SEO Keywords: OIDC란, OpenID Connect 로그인, OIDC OAuth2 차이, ID Token JWT, OIDC 동작 방식, SSO 구현, EKS OIDC, 소셜 로그인 원리
들어가며
"Google로 로그인" 버튼을 클릭할 때마다 내부에서는 복잡한 인증 프로토콜이 동작합니다. 2026년 현재 이 소셜 로그인과 기업 SSO의 사실상 표준은 OIDC(OpenID Connect)입니다. Kubernetes IRSA, GitHub Actions OIDC, 사내 IdP 연동까지 클라우드 네이티브 환경 전반에 깊숙이 자리 잡은 이 프로토콜을 이 글에서 처음부터 끝까지 정리합니다.
1. OIDC란 무엇인가?
OIDC는 OpenID Connect의 약자로, OAuth 2.0 위에 인증(Authentication) 레이어를 추가한 표준 프로토콜입니다. 2014년 OpenID Foundation이 발표했으며, 기존 OpenID 2.0의 복잡성을 해소하면서 OAuth 2.0의 인가 체계를 그대로 활용합니다.
핵심을 한 문장으로 정리하면 이렇습니다. OAuth 2.0이 "이 사용자가 어떤 권한을 가졌는가(인가)"를 다룬다면, OIDC는 거기에 "이 사용자가 누구인가(인증)"까지 대답합니다.
2. OAuth 2.0과 OIDC의 결정적 차이
두 프로토콜을 혼동하는 경우가 많습니다. 차이를 명확히 이해하는 것이 OIDC의 출발점입니다.
항목OAuth 2.0OIDC
| 목적 | 인가 (권한 위임) | 인증 (신원 확인) |
| "누구인가?" | 알 수 없음 | ID Token으로 확인 |
| 발급 토큰 | Access Token | Access Token + ID Token |
| 사용자 정보 | 별도 API 호출 필요 | JWT 페이로드에 포함 |
| 표준 엔드포인트 | 없음 | /.well-known/openid-configuration |
OAuth 2.0만으로 로그인을 구현하면 Access Token을 얻은 뒤 별도의 /userinfo API를 호출해야 사용자 정보를 가져올 수 있습니다. OIDC는 이 과정을 ID Token 하나로 해결합니다.
3. OIDC 동작 흐름 단계별 해설
위 다이어그램의 각 단계를 상세히 살펴봅니다. OIDC에는 여러 Flow가 있지만 웹 애플리케이션에서 가장 많이 쓰이는 Authorization Code Flow 기준입니다.
① 로그인 클릭 — 사용자가 "Google로 로그인" 버튼을 누릅니다. 클라이언트 앱(RP, Relying Party)이 요청을 받습니다.
② 인증 요청 (Authorization Request) — RP가 사용자를 IdP(Identity Provider)로 리다이렉트합니다. 이때 URL에 response_type=code, scope=openid profile email, client_id, redirect_uri, state, nonce 파라미터가 포함됩니다.
https://accounts.example.com/auth?
response_type=code&
client_id=my-app&
redirect_uri=https://app.example.com/callback&
scope=openid profile email&
state=abc123&
nonce=xyz789
③ 사용자 인증 — IdP가 로그인 화면을 보여주고 사용자가 ID/PW를 입력합니다. MFA가 설정된 경우 추가 인증 단계가 진행됩니다.
④ Authorization Code 발급 — 인증 성공 시 IdP가 일회용 코드를 발급하고 사용자를 redirect_uri로 되돌려 보냅니다.
https://app.example.com/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=abc123
⑤ Token 교환 요청 — RP 서버가 코드를 IdP의 Token Endpoint에 전달합니다. 이 요청은 브라우저를 거치지 않고 서버 간(백채널)으로 직접 이루어집니다.
⑥ ID Token + Access Token 수신 — IdP가 두 가지 토큰을 반환합니다. ID Token은 사용자 신원을, Access Token은 리소스 접근 권한을 나타냅니다.
⑦ JWT 검증 — RP 서버가 ID Token의 서명을 IdP의 공개키로 검증하고, iss, aud, exp, nonce 클레임을 확인합니다.
⑧ 로그인 완료 — 검증을 통과하면 세션을 생성하고 사용자에게 로그인 완료 응답을 반환합니다.
4. ID Token(JWT) 구조 상세 분석
OIDC의 핵심 산물인 ID Token은 JWT(JSON Web Token) 형식입니다. 점(.)으로 구분된 세 파트로 구성됩니다.
헤더.페이로드.서명
헤더 — 서명 알고리즘을 명시합니다.
{
"alg": "RS256",
"kid": "key-id-2026"
}
페이로드 — 사용자 정보와 토큰 메타데이터가 담깁니다.
{
"sub": "1234567890",
"email": "user@example.com",
"name": "홍길동",
"picture": "https://example.com/photo.jpg",
"iss": "https://accounts.example.com",
"aud": "my-client-app",
"exp": 1742345678,
"iat": 1742342078,
"nonce": "xyz789"
}
주요 클레임의 의미를 정리하면 다음과 같습니다. sub는 IdP 내 사용자 고유 식별자로 이메일보다 안정적입니다. iss는 토큰 발급자 URL입니다. aud는 이 토큰의 수신자로, 반드시 자신의 client_id와 일치하는지 검증해야 합니다. nonce는 리플레이 공격을 방지하는 일회용 값입니다.
서명 — IdP가 개인키로 서명하며, RP는 IdP의 공개키(JWKS Endpoint에서 조회)로 검증합니다. 이 과정이 중간자 공격을 방어합니다.
5. OIDC 실전 활용 사례
소셜 로그인 — "Google로 로그인", "GitHub으로 로그인", "Kakao로 로그인"이 모두 OIDC 기반입니다. 각 플랫폼이 IdP 역할을 담당합니다.
기업 SSO — 사내 IdP(Keycloak, Okta, Azure AD 등)를 구축하고 여러 사내 서비스가 OIDC로 연동합니다. 한 번 로그인으로 모든 서비스에 접근하는 Single Sign-On이 구현됩니다.
EKS IRSA(IAM Roles for Service Accounts) — Kubernetes Pod에 AWS IAM 권한을 부여할 때 OIDC Provider를 활용합니다. 클러스터마다 고유한 OIDC Issuer URL이 생성되고, 이를 AWS IAM에 등록하면 Pod의 서비스 어카운트가 JWT를 AWS STS에 제출해 임시 자격증명을 발급받습니다. 하드코딩된 AWS Access Key 없이 최소 권한 원칙을 실현하는 현대적 방법입니다.
GitHub Actions OIDC — CI/CD 파이프라인에서 GitHub이 OIDC 토큰을 발급하고, AWS나 GCP가 이를 신뢰하도록 설정하면 시크릿 없이 클라우드 리소스에 접근할 수 있습니다.
6. OIDC 보안 체크리스트
OIDC를 구현할 때 반드시 확인해야 할 보안 항목들입니다.
state 파라미터로 CSRF를 방어하고, nonce로 리플레이 공격을 차단합니다. ID Token의 aud 클레임이 자신의 client_id와 일치하는지 반드시 검증해야 합니다. exp 클레임으로 토큰 만료 여부를 확인하고, 서명 검증은 IdP의 JWKS Endpoint에서 최신 공개키를 조회해 수행합니다. redirect_uri는 사전에 IdP에 등록된 값만 허용해야 오픈 리다이렉트 취약점을 막을 수 있습니다.
마무리
OIDC는 현대 인증 아키텍처의 근간입니다. 소셜 로그인의 편리함 뒤에는 Authorization Code Flow의 정교한 보안 설계가 있고, Kubernetes IRSA의 keyless 인증도 OIDC 위에 구현됩니다. 2026년 클라우드 네이티브 환경에서 OIDC를 이해하는 것은 선택이 아닌 필수입니다. ID Token의 JWT 클레임을 직접 디코딩해보고, JWKS Endpoint에서 공개키를 조회해 서명을 검증해보는 실습이 가장 빠른 이해의 지름길입니다.
관련 키워드: OIDC란, OpenID Connect 동작 방식, OAuth2 OIDC 차이, ID Token JWT 구조, Authorization Code Flow, EKS IRSA OIDC, GitHub Actions OIDC, Keycloak OIDC 설정, SSO 구현 방법, 소셜 로그인 원리 2026