OAuth 및 OIDC 엔드포인트 개요
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인프라/DevOps/보안
대상자
- 소프트웨어 개발자, 보안 엔지니어, 인증 시스템 설계자
- 난이도: 중급 이상 (OAuth 2.0 및 OpenID Connect 프로토콜 이해 필요)
핵심 요약
- OAuth 2.0의 3개 필수 엔드포인트 :
- /authorize
: 사용자 인증 및 권한 동의 처리
- /token
: 인증 코드 → 액세스 토큰/리프레시 토큰 교환
- /introspect
(선택): 토큰 유효성 검증
- OpenID Connect 추가 엔드포인트 :
- /well-known/jwks.json
: ID 토큰 서명 검증용 공개 키 제공
- /well-known/openid-configuration
: 서버 메타데이터 동적 발견
- /userinfo
: 액세스 토큰 기반 사용자 프로필 정보 조회
- 기본 인증 흐름:
authorize → token → userinfo
의 3단계 프로세스
섹션별 세부 요약
1. 인트로
- 엔드포인트 정의: 인증 서버의 URL로, 애플리케이션과 사용자 간 인증/권한 부여를 처리
- OAuth 2.0 역할: 리소스 접근 권한 부여 프레임워크
- OIDC 기능: 사용자 인증 확장, ID 토큰 발급
2. OAuth 2.0 엔드포인트
- /authorize
- response_type=code
, client_id
, redirect_uri
, scope
, state
파라미터 사용
- 사용자 로그인 후 임시 authorization code 발급
- /token
- 앱 서버가 client_id
, client_secret
, authorization code로 액세스 토큰 요청
- access token, ID token, refresh token 응답
- Grant Types
- Client Credentials Grant: 기계 간 통신용 액세스 토큰 요청
- Refresh Token Grant: 만료된 액세스 토큰 재발급
3. OpenID Connect 추가 엔드포인트
- /well-known/jwks.json
- RSA/ECDSA 공개 키 제공 → ID 토큰 서명 검증
- /well-known/openid-configuration
- 서버 이슈어, 엔드포인트 URL, 지원 스코프, 암호화 알고리즘 정보 제공
- 애플리케이션의 자동 구성 가능
- /userinfo
- 액세스 토큰으로 sub
, email
, name
등 사용자 정보 조회
- 최소 권한 원칙 준수
4. 인증 흐름 예시 (Authorization Code Flow)
- Discovery:
/well-known/openid-configuration
에서 서버 메타데이터 조회 - Authorization: 사용자 리디렉션 →
authorize
엔드포인트에서 로그인 및 동의 - Token Exchange: 앱 서버가
/token
에 인증 코드 전송 → 액세스/ID 토큰 발급 - User Data Access:
/userinfo
엔드포인트로 사용자 정보 조회 - Token Validation:
/jwks.json
으로 ID 토큰 서명 검증 - Logout:
/logout
엔드포인트 호출 → 세션 종료
결론
- 실무 팁:
- Authorization Code Flow 사용 → 보안 강화
- JWKS 키 검증 필수 → ID 토큰 위변조 방지
- /well-known/openid-configuration 활용 → 서버 자동 구성 가능
- 리프레시 토큰 사용 → 토큰 재발급 효율성 향상
- 핵심: OAuth 2.0과 OIDC 엔드포인트는 현대 애플리케이션의 보안 인증 기반으로, 정확한 이해가 필수적