OIDC로 API 접근 보호하기
본문
Secure API Access with OIDC
Traefik Hub 기능
이 미들웨어는 Traefik Hub에서만 사용할 수 있어요. Traefik Hub의 고급 기능에 대해 자세히 알아보세요.
OpenID Connect 인증은 OAuth2 Authorization Code Flow(OAuth 2.0 RFC 6749, 4.1절에 정의) 위에 구축돼 있어요. 이는 외부 프로바이더(Keycloak, Okta 등)에 인증을 위임해 애플리케이션을 보호하고, 권한 부여 목적으로 최종 사용자의 세션 클레임과 스코프를 얻을 수 있게 해줘요.
사용자를 인증하기 위해 미들웨어는 인증 프로바이더를 통해 리다이렉트해요. 인증이 완료되면 사용자는 업스트림 애플리케이션에 접근을 허가받기 전에 미들웨어로 다시 리다이렉트돼요. 아래 다이어그램에서 볼 수 있어요:
OIDC 미들웨어가 요청으로 제공된 자격 증명을 사용하게 하려면 다음 구성을 적용하세요:
Middleware OIDC
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: oidc-login
namespace: apps
spec:
plugin:
oidc:
issuer: MY_ISSUER_URL
clientId: "urn:k8s:secret:oidc-client:client_id"
clientSecret: "urn:k8s:secret:oidc-client:client_secret"
redirectUrl: /oidc/callback
Kubernetes Secrets
apiVersion: v1
kind: Secret
metadata:
name: oidc-client
stringData:
client_id: my-oauth-client-ID # Set your ClientID here
client_secret: my-oauth-client-secret # Set your client secret here
IngressRoute
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: secure-applications-apigateway-oauth2-client-credentials
namespace: apps
spec:
entryPoints:
- websecure
routes:
- match: Path(`/my-app`)
kind: Rule
services:
- name: whoami
port: 80
middlewares:
- name: oidc-login
Service & Deployment
kind: Deployment
apiVersion: apps/v1
metadata:
name: whoami
namespace: apps
spec:
replicas: 3
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: traefik/whoami
---
apiVersion: v1
kind: Service
metadata:
name: whoami
namespace: apps
spec:
ports:
- port: 80
name: whoami
selector:
app: whoami
고급 구성
고급 옵션은 reference 페이지에 설명되어 있어요.
예를 들어 세션 저장을 커스터마이즈하는 방법을 확인할 수 있어요:
- 쿠키 사용(옵션
session(기본 동작)) - Redis 저장소 사용.
프로덕션에서 Traefik OSS를 사용 중인가요?
업무에서 Traefik을 사용한다면 엔터프라이즈급 API 게이트웨이 기능이나 Traefik OSS용 상용 지원을 고려해 보세요.
-
API Gateway 데모 영상 보기
-
24/7/365 OSS 지원 요청하기
Traefik OSS에 API 게이트웨이 기능을 추가하는 건 빠르고 매끄러워요. 대체(rip and replace)가 필요 없고 모든 구성이 그대로 유지돼요. 이 짧은 영상으로 직접 확인해 보세요.