feat(sites): Coolify Keycloak SSO 로그인 시작 URL(/auth/keycloak/redirect) 적용

callback 이 /auth/keycloak/callback 이라 Socialite 시작 경로는 /auth/keycloak/redirect. 포털 SSO 세션이 있으면 폼 없이 통과. COOLIFY_URL 로 덮어쓰기 가능.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 09:46:26 +09:00
parent 3945992125
commit e21d622ba9
2 changed files with 5 additions and 3 deletions

View File

@@ -26,7 +26,7 @@ export const config = {
coder: process.env.CODER_URL || "https://coder.bokdev.in/api/v2/users/oidc/callback", coder: process.env.CODER_URL || "https://coder.bokdev.in/api/v2/users/oidc/callback",
gitea: process.env.GITEA_URL || "https://gitea.bokdev.in/user/oauth2/keycloak", gitea: process.env.GITEA_URL || "https://gitea.bokdev.in/user/oauth2/keycloak",
kubero: process.env.KUBERO_URL || "https://kubero.bokdev.in", kubero: process.env.KUBERO_URL || "https://kubero.bokdev.in",
coolify: process.env.COOLIFY_URL || "https://coolify.bokdev.in", coolify: process.env.COOLIFY_URL || "https://coolify.bokdev.in/auth/keycloak/redirect",
harbor: process.env.HARBOR_URL || "https://harbor.bokdev.in", harbor: process.env.HARBOR_URL || "https://harbor.bokdev.in",
openeverest: process.env.OPENEVEREST_URL || "https://openeverest.bokdev.in", openeverest: process.env.OPENEVEREST_URL || "https://openeverest.bokdev.in",
minio: process.env.MINIO_URL || "https://minioc.bokdev.in", minio: process.env.MINIO_URL || "https://minioc.bokdev.in",

View File

@@ -5,6 +5,7 @@
// 포털 로그인 후 이 링크를 누르면 바로 들어간다. // 포털 로그인 후 이 링크를 누르면 바로 들어간다.
// - Coder: /api/v2/users/oidc/callback (code 없으면 keycloak authorize 로 307) // - Coder: /api/v2/users/oidc/callback (code 없으면 keycloak authorize 로 307)
// - Gitea: /user/oauth2/keycloak (auth source 명=keycloak, 307 로 keycloak authorize) // - Gitea: /user/oauth2/keycloak (auth source 명=keycloak, 307 로 keycloak authorize)
// - Coolify: /auth/keycloak/redirect (Laravel Socialite, keycloak authorize 로 302)
// SSO 미지원(Kubero/Harbor 등)은 기본 URL 유지. // SSO 미지원(Kubero/Harbor 등)은 기본 URL 유지.
// //
// adminOnly: true 인 항목은 관리자(role=admin)에게만 렌더(숨김, disabled 아님). // adminOnly: true 인 항목은 관리자(role=admin)에게만 렌더(숨김, disabled 아님).
@@ -17,8 +18,9 @@ export const sites = [
{ key: "gitea", name: "Gitea", desc: "Git 저장소", url: config.tools.gitea, icon: "🍵", sso: true }, { key: "gitea", name: "Gitea", desc: "Git 저장소", url: config.tools.gitea, icon: "🍵", sso: true },
// Kubero: Keycloak SSO 로 로그인 가능(단, 랜딩에서 "OAuth 로 로그인"을 한 번 더 눌러야 함). // Kubero: Keycloak SSO 로 로그인 가능(단, 랜딩에서 "OAuth 로 로그인"을 한 번 더 눌러야 함).
{ key: "kubero", name: "Kubero", desc: "배포 (PaaS)", url: config.tools.kubero, icon: "🚀", sso: true }, { key: "kubero", name: "Kubero", desc: "배포 (PaaS)", url: config.tools.kubero, icon: "🚀", sso: true },
// Coolify: Kubero 와 같은 배포 PaaS. SSO 자동 로그인 엔드포인트 미확인이라 기본 URL 유지. // Coolify: Kubero 와 같은 배포 PaaS. Keycloak SSO 지원 →
{ key: "coolify", name: "Coolify", desc: "배포 (PaaS)", url: config.tools.coolify, icon: "⛵" }, // /auth/keycloak/redirect (로그인 시작, code 없으면 keycloak authorize 로 302). callback 은 /auth/keycloak/callback.
{ key: "coolify", name: "Coolify", desc: "배포 (PaaS)", url: config.tools.coolify, icon: "⛵", sso: true },
// --- 인프라/운영 (관리자 전용) --- // --- 인프라/운영 (관리자 전용) ---
{ key: "harbor", name: "Harbor", desc: "컨테이너 레지스트리", url: config.tools.harbor, icon: "📦", adminOnly: true }, { key: "harbor", name: "Harbor", desc: "컨테이너 레지스트리", url: config.tools.harbor, icon: "📦", adminOnly: true },
{ key: "openeverest", name: "OpenEverest", desc: "DB 콘솔", url: config.tools.openeverest, icon: "🗄️", adminOnly: true }, { key: "openeverest", name: "OpenEverest", desc: "DB 콘솔", url: config.tools.openeverest, icon: "🗄️", adminOnly: true },