2.4 KiB
title, updated, tags
| title | updated | tags | ||||
|---|---|---|---|---|---|---|
| n8n OIDC SSO 버튼 미노출 (envFrom 누락) | 2026-07-11 |
|
증상
https://n8n.inouter.com 접속 시 HTTP 200으로 페이지는 뜨지만 "Sign in with SSO" 버튼 없이 로컬 이메일/비밀번호 폼만 표시됨. /assets/oidc-frontend-hook.js 요청 시 404.
2026-07-11-pgpool-stale-primary-n8n-outage 복구 직후 사용자가 "빈 화면만 나온다"고 보고 — 재현해보니 실제로는 정상 로드되었고(pgpool 복구 직후라 캐시/타이밍 이슈로 추정), 대신 이 SSO 버그를 발견.
원인
n8n 로그: [OIDC Hook] Missing configuration: OIDC_CLIENT_ID, OIDC_CLIENT_SECRET. OIDC disabled.
OIDC_CLIENT_ID/OIDC_CLIENT_SECRET은 n8n-oidc-secret Secret에 존재하지만, n8n Deployment의 envFrom은 n8n-app-config(ConfigMap) + n8n-app-secret(Secret, DB 비밀번호만 포함)만 참조 — n8n-oidc-secret이 어디에도 연결되어 있지 않았음.
../services/n8n#배포-구조-—-helm--수동-패치-혼재-주의 참조 — OIDC 관련 리소스는 Helm chart values 외부에서 수동으로 추가된 구조라 helm get values로는 안 보임. 최초 OIDC 세팅 시(../services/n8n 작성일 2026-04-16 추정) n8n-oidc-secret을 만들고 hooks ConfigMap/volume은 연결했지만 envFrom 배선을 빠뜨린 것으로 보임 — 즉 OIDC SSO가 처음부터 한 번도 정상 동작한 적이 없었을 가능성.
조치
kubectl -n n8n patch deployment n8n --type=json -p='[{"op": "add", "path": "/spec/template/spec/containers/0/envFrom/-", "value": {"secretRef": {"name": "n8n-oidc-secret"}}}]'
재기동 후 로그 확인:
[OIDC Hook] Initializing OIDC authentication...
[OIDC Hook] OIDC routes registered:
- GET /auth/oidc/login
- GET /auth/oidc/callback
- GET /assets/oidc-frontend-hook.js
브라우저에서 "Sign in with SSO" 버튼 노출 확인 완료. (kubectl patch만 적용 — Helm 값에는 반영 안 됨, 위 드리프트 위험 참조)
TODO
- 실제 Gitea OIDC 로그인 플로우 end-to-end 테스트 (버튼만 확인했고 로그인 자체는 미검증)
- helm upgrade 시 이 patch가 유지되는지 확인 절차 필요 — 가능하면
main.extraEnvFrom같은 chart 지원 값으로 이전 검토, 안 되면 최소한 upgrade 후 체크리스트에 추가