1. Authorization Code Grant
사용자 로그인 → Authorization Code → Access Token 교환
- 사용처: 웹 서버, 모바일 앱 (Authorization Code + PKCE)
- 보안 우수: 토큰은 브라우저에 노출되지 않음
흐름
① 사용자: 브라우저 → 로그인
② 인증 서버: Authorization Code 발급
③ 클라이언트 서버: Code → Access Token 교환
④ 클라이언트 서버: Token으로 API 호출
② 인증 서버: Authorization Code 발급
③ 클라이언트 서버: Code → Access Token 교환
④ 클라이언트 서버: Token으로 API 호출
OpenID Connect (OIDC)에서도 가장 많이 사용하는 표준 방식
* PKCE (Proof Key for Code Exchange)
보안 강화를 위한 보조 프로토콜
클라이언트 서버에서 인증 요청 시 랜덤 문자열을 암호화(SHA-256)하여 해시값을 보내고,
인증 서버가 해당 해시값을 저장,
클라이언트 서버가 토큰 요청 시 원본 문자열을 보내고,
인증 서버가 해당 문자열과 저장된 해시값을 비교해서 동일하면 토큰 발급
2. Implicit Grant (보안 취약)
Access Token을 바로 발급 (Authorization Code 없음)
- 사용처: 과거 SPA (React, Angular 등)
- 단점: Access Token이 URL로 노출됨 → 보안에 취약
- 현재는 사용 지양, 대신 Authorization Code + PKCE 권장
3. Resource Owner Password Credentials Grant
사용자가 앱에 직접 ID/PW 입력 → 바로 토큰 발급
- 사용처: 신뢰할 수 있는 앱에서만 (예: 사내 앱)
- 보안상 위험 (사용자 비밀번호 유출 우려)
흐름
① 앱에서 사용자 ID/PW 입력
② 바로 Access Token 요청
③ Access Token으로 API 호출
현재는 OAuth2.1에서 제거
4. Client Credentials Grant
사용자 없이 클라이언트 자체 인증
- 사용처: 서버 간 API 통신 / 백엔드 작업
- Access Token은 클라이언트 자격 정보(Client ID, Secret)로 발급
흐름
① 클라이언트 → 인증 서버: Client ID/Secret 제출
② 인증 서버 → Access Token 발급
③ 클라이언트 → API 호출
'CS 정리' 카테고리의 다른 글
| BunkerWeb, 도입 시 겪은 이슈: HTTP/2 프로토콜 (0) | 2025.07.29 |
|---|---|
| HTTPS(HyperText Transfer Protocol + SSL/TLS) (0) | 2025.07.23 |
| Spring Security + Keycloak으로 SSO 구현하기 (0) | 2025.07.13 |
| 네트워크 프록시 (0) | 2025.07.08 |
| 트랜잭션 격리 수준 (1) | 2025.07.07 |