Multi Auth Guide (SAML & LDAP)
概要
この文書は、APIM BFFでSAML(Security Assertion Markup Language)とLDAP(Active Directory)認証を設定し、運用する方法に関する完全なガイドです。
- *バックエンド(Kubernetes)**と 프론트엔드(BFF 콘솔) 設定をすべて含みます。
目次
toc_min_heading_level: 1 toc_max_heading_level: 3
基本概念
ドメイン別認証分岐とは?
APIM BFFは、接続するドメインに応じて異なる認証方式を使用できます:
- 기본 인증: 一般的なベーシック認証
- SAML 인증: 特定のドメインでSAML IDPを通じた認証
- LDAP 인증: 特定のドメインでLDAP/Active Directoryを通じた認証
全体設定フロー
- 백엔드 설정 (Kubernetes): Tenant Managerに認証プロファイルと環境変数を設定
- 프론트엔드 설정 (BFF 콘솔): ドメイン別認証方式分岐設定
使用シナリオ
예시 1: SAML 인증 도메인 (IDP 로그아웃 활성화)- バックエンド: k8s_saml プロファイル使用
- フロントエンド: console1.xxx.com → SAMLドメイン設定、IDPログアウトを有効化ON
- 特徴: ログアウトボタンが表示されない、エラーメッセージを削除
- バックエンド: k8s_saml プロファイル使用
- フロントエンド: console1.xxx.com → SAMLドメイン設定、IDPログアウトを有効化OFF
- 特徴: 一般認証と同様に動作(ログアウトボタン表示、エラーメッセージ表示)
- バックエンド: k8s_ldap プロファイル使用
- フロントエンド: console2.xxx.com → LDAPドメイン設定
- バックエンド: デフォルトプロファイル使用
- フロントエンド: 設定されていないドメイン
- 認証方式: デフォルトベーシック認証
バックエンド設定(kubernetes)
各プロファイル説明
k8s_ldap
- 설명: LDAP(Lightweight Directory Access Protocol)認証のみを使用するプロファイル
- 사용 사례: 企業内部のActive DirectoryまたはLDAPサーバーを使用したユーザー認証
- 특징:
- LDAPサーバーと直接通信してユーザー認証
- グループベースの権限管理をサポート
- SAML機能を無効化
k8s_saml
- 설명: SAML(Security Assertion Markup Language)認証のみを使用するプロファイル
- 사용 사례: Keycloak、Okta、Azure ADなどの外部IdP(Identity Provider)を通じたSSO認証
- 특징:
- IdPメタデータの自動パースをサポート
- URL、クラスパス、ファイルシステムなどのさまざまなメタデータソースをサポート
- LDAP機能を無効化
k8s_multi
- 설명: LDAPとSAML認証を同時にサポートするプロファイル
- 사용 사례: 様々な認証方式を選択的に使用する必要がある環境
- 특징:
- LDAPとSAMLの2つの認証方式をすべて有効化
- ユーザーが認証方式を選択してログイン可能
- 各認証方式ごとに独立したセッション管理
2.2 k8s_ldap 전용 환경변수
필수 환경변수
LDAP 서버 설정
| 環境変数 | 説明 | 例 | 基本値 | 必須 |
|---|---|---|---|---|
| LDAP_SERVER_URL | LDAPサーバーのアドレス | ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr | ldap://goblin-ldap.goblin-ldap.svc.cluster.local:389/dc=skapim,dc=com | ✅ |
| LDAP_MANAGER_DN | LDAP管理者DN (Distinguished Name) | CN=Apim,OU=Users,DC=skbb,DC=co,DC=kr | cn=admin,dc=skapim,dc=com | ✅ |
| LDAP_MANAGER_PASSWORD | LDAP管理者パスワード | akemfdj1@ | - | ✅ |
LDAP 인증 설정
| 環境変数 | 説明 | 例 | 基本値 | 必須 |
|---|---|---|---|---|
| LDAP_USER_DN_PATTERNS | ユーザーDNパターン (0はユーザー名に置き換えられる) | cn=0,OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr | cn=0,ou=people | ⚠️ |
| LDAP_GROUP_SEARCH_BASE | グループ検索の基本DN | OU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr | ou=groups | ⚠️ |
| LDAP_GROUP_ROLE_ATTRIBUTE | グループ役割属性名 | cn | cn | ⚠️ |
| LDAP_PASSWORD_ATTRIBUTE | パスワード属性名 | userPassword | userPassword | ⚠️ |
배포용 k8s deploy 중요부분만
apiVersion: apps/v1
kind: Deployment
metadata:
name: apim-tenant-manager-deployment
labels:
app: apim-tenant-manager
spec:
replicas: 1
selector:
matchLabels:
app: apim-tenant-manager
template:
metadata:
labels:
app: apim-tenant-manager
spec:
containers:
- name: apim-tenant-manager
image: registry.example.com/apim-tenant-manager:latest
ports:
- containerPort: 8080
env:
# プロファイル設定- name: SPRING_PROFILES_ACTIVE
value: "k8s_ldap"
# LDAPサーバー設定- name: LDAP_SERVER_URL
value: "ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_DN
value: "CN=Apim,OU=Users,DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_PASSWORD
valueFrom:
secretKeyRef:
name: ldap-secret
key: manager-password
# LDAP認証設定- name: LDAP_USER_DN_PATTERNS
value: "cn={0},OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_SEARCH_BASE
value: "OU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_ROLE_ATTRIBUTE
value: "cn"
- SPRING_PROFILES_ACTIVEは必ず k8s_ldapに設定すること
- LDAPサーバーURLはKubernetes内部のService名としても使用可能 (例: ldap://ldap-service.namespace.svc.cluster.local:389)
2.3 k8s_saml 전용 환경변수
필수 환경변수
SAML SP (Service Provider) 설정
| 環境変数 | 説明 | 例 | 基本値 | 必須 |
|---|---|---|---|---|
| SAML_SP_ENTITY_ID | SP Entity ID (ユニーク識別子) | apim-tenant-manager | apim-tenant-manager | ⚠️ |
| SAML_SP_METADATA_URL | SPメタデータURL | /saml/metadata | /saml/metadata | ⚠️ |
| SAML_SP_SSO_URL | SP SSO URL | /saml/sso | /saml/sso | ⚠️ |
| SAML_SP_SLO_URL | SP SLO (Single Logout) URL | /saml/slo | /saml/slo | ⚠️ |
| SAML_SP_ACS_URL | SP ACS (Assertion Consumer Service) URL | /saml/acs | /saml/acs | ⚠️ |
| SAML_SP_KEYSTORE_LOCATION | キーストアファイルの場所 | classpath:saml/keystore.jks | classpath:saml/keystore.jks | ⚠️ |
| SAML_SP_KEYSTORE_PASSWORD | キーストアパスワード | changeit | - | ✅ |
| SAML_SP_PRIVATE_KEY_PASSWORD | プライベートキーのパスワード | changeit | - | ✅ |
| SAML_SP_CERTIFICATE_ALIAS | 証明書エイリアス | saml | saml | ⚠️ |
SAML IdP (Identity Provider) 설정
| 環境変数 | 説明 | 例 | 基本値 | 必須 |
|---|---|---|---|---|
| SAML_IDP_METADATA_URL | IdPメタデータソース (XMLファイルまたはURL)주의: メタデータから自動的にentity-id、sso-url、slo-urlなどをパースする | URL: https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptorファイル: classpath:saml/idp-metadata.xmlConfigMap: file:/etc/config/idp-metadata.xml | https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptor | ✅ |
| SAML_IDP_ENTITY_ID | IdP Entity ID (メタデータパース失敗時のフォールバック) | https://keycloak.api.skapim.com/realms/saml | - | ⚠️ |
| SAML_IDP_SSO_URL | IdP SSO URL (メタデータパース失敗時のフォールバック) | https://keycloak.api.skapim.com/realms/saml/protocol/saml | - | ⚠️ |
| SAML_IDP_SLO_URL | IdP SLO URL (メタデータパース失敗時のフォールバック) | https://keycloak.api.skapim.com/realms/saml/protocol/saml | - | ⚠️ |
| SAML_IDP_CERTIFICATE_LOCATION | IdP証明書ファイルの場所 | classpath:saml/idp-certificate.crt | classpath:saml/idp-certificate.crt | ⚠️ |
SAML 보안 설정
| 環境変数 | 説明 | 例 | 基本値 | 必須 |
|---|---|---|---|---|
| SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONS | Assertion署名の必要性 | true | true | ⚠️ |
| SAML_SECURITY_REQUIRE_SIGNED_RESPONSES | Response署名の必要性 | true | true | ⚠️ |
| SAML_SECURITY_REQUIRE_ENCRYPTED_ASSERTIONS | Assertion暗号化の必要性 | false | false | ⚠️ |
| SAML_SECURITY_ASSERTION_VALIDITY_TIME | Assertion有効時間 (秒) | 300 | 300 (5分) | ⚠️ |
| SAML_SECURITY_RESPONSE_VALIDITY_TIME | Response有効時間 (秒) | 300 | 300 (5分) | ⚠️ |
- ✅: 必須設定
- ⚠️: 任意設定 (基本値使用可能)
배포용 k8s deploy 중요부분만
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: apim-tenant-manager-deployment
labels:
app: apim-tenant-manager
spec:
replicas: 1
selector:
matchLabels:
app: apim-tenant-manager
template:
metadata:
labels:
app: apim-tenant-manager
spec:
containers:
- name: apim-tenant-manager
image: registry.example.com/apim-tenant-manager:latest
ports:
- containerPort: 8080
env:
# プロファイル設定- name: SPRING_PROFILES_ACTIVE
value: "k8s_saml"
# SAML SP 設定- name: SAML_SP_ENTITY_ID
value: "apim-tenant-manager"
- name: SAML_SP_KEYSTORE_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: keystore-password
- name: SAML_SP_PRIVATE_KEY_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: private-key-password
# SAML IdP 設定 (ConfigMap 使用例)- name: SAML_IDP_METADATA_URL
value: "file:/etc/config/idp-metadata.xml"
# SAML IdP フォールバック設定 (メタデータ解析失敗時)- name: SAML_IDP_ENTITY_ID
value: "https://keycloak.api.skapim.com/realms/saml"
- name: SAML_IDP_SSO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"
- name: SAML_IDP_SLO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"
# SAML セキュリティ設定- name: SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONS
value: "true"
- name: SAML_SECURITY_REQUIRE_SIGNED_RESPONSES
value: "true"
# ConfigMap マウントvolumeMounts:
- name: idp-metadata
mountPath: /etc/config
readOnly: true
volumes:
- name: idp-metadata
configMap:
name: idp-metadata-configmap
- SAML_IDP_METADATA_URLはURL、クラスパス、ファイルパスのすべてをサポート
- IdPメタデータはConfigMapで管理可能 (以下参照)
IdPメタデータ ConfigMap 設定方法
IdPメタデータ XML ファイルの準備
IdPからメタデータXMLファイルを受け取るか、ダウンロードします。
例示メタデータ XML:<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="https://keycloak.api.skapim.com/realms/saml">
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<!-- SSOサービス --><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>
<!-- SLOサービス --><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>
<!-- 証明書 --><md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDXTCCAkWgAwIBAgIJAKoK/Ovj8u...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
</md:IDPSSODescriptor>
</md:EntityDescriptor>
ConfigMap 생성
방법 1: 파일로부터 직접 생성kubectl create configmap idp-metadata-configmap \
--from-file=idp-metadata.xml=/path/to/idp-metadata.xml \
--namespace=default
idp-metadata-configmap.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
name: idp-metadata-configmap
namespace: default
data:
idp-metadata.xml: |
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="https://keycloak.api.skapim.com/realms/saml">
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://keycloak.api.skapim.com/realms/saml/protocol/saml"/>
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDXTCCAkWgAwIBAgIJAKoK/Ovj8u...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
</md:IDPSSODescriptor>
</md:EntityDescriptor>
適用:
kubectl apply -f idp-metadata-configmap.yaml
ConfigMap 업데이트 방법
방법 1: 파일로부터 업데이트kubectl create configmap idp-metadata-configmap \
--from-file=idp-metadata.xml=/path/to/idp-metadata.xml \
--dry-run=client -o yaml | kubectl apply -f -
kubectl apply -f idp-metadata-configmap.yaml
kubectl edit configmap idp-metadata-configmap
ConfigMapを更新した後、Podを再起動すると新しいメタデータが適用されます:
kubectl rollout restart deployment/apim-tenant-manager-deployment
메타데이터 URL 방식 사용 (ConfigMap 불필요)
ConfigMapを使用せずにURLで直接参照することもできます:
env:
- name: SAML_IDP_METADATA_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptor"
この場合、アプリケーション起動時にURLからメタデータを自動的にダウンロードして解析します。
2.4 k8s_multi 설명
k8s_ldap, k8s_saml 동시 설정
k8s_multiプロファイルはLDAPとSAML認証を同時にサポートします。ユーザーはログイン時に認証方式を選択できます。
환경변수 설정
k8s_multiプロファイルはk8s_ldapとk8s_samlのすべての環境変数を一緒に設定する必要があります。
필수 환경변수:LDAP 설정
| 環境変数 | 説明 | 例 | 必須 |
|---|---|---|---|
| LDAP_SERVER_URL | LDAPサーバーアドレス | ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr | ✅ |
| LDAP_MANAGER_DN | LDAP管理者DN | CN=Apim,OU=Users,DC=skbb,DC=co,DC=kr | ✅ |
| LDAP_MANAGER_PASSWORD | LDAP管理者パスワード | akemfdj1@ (Secret推奨) | ✅ |
| LDAP_USER_DN_PATTERNS | ユーザーDNパターン | cn=0,OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr | ⚠️ |
| LDAP_GROUP_SEARCH_BASE | グループ検索基本DN | OU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr | ⚠️ |
| LDAP_GROUP_ROLE_ATTRIBUTE | グループ役割属性名 | cn | ⚠️ |
SAML SP 설정
| 環境変数 | 説明 | 例 | 必須 |
|---|---|---|---|
| SAML_SP_ENTITY_ID | SP Entity ID | apim-tenant-manager-v3 | ⚠️ |
| SAML_SP_KEYSTORE_PASSWORD | キーストアパスワード | changeit (Secret推奨) | ✅ |
| SAML_SP_PRIVATE_KEY_PASSWORD | プライベートキーのパスワード | changeit (Secret推奨) | ✅ |
SAML IdP 설정
| 環境変数 | 説明 | 例 | 必須 |
|---|---|---|---|
| SAML_IDP_METADATA_URL | IdPメタデータソース (URL/ファイル/ConfigMap) | URL: https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptorファイル: file:/etc/config/idp-metadata.xml | ✅ |
| SAML_IDP_ENTITY_ID | IdP Entity ID (フォールバック) | https://keycloak.api.skapim.com/realms/saml | ⚠️ |
| SAML_IDP_SSO_URL | IdP SSO URL (フォールバック) | https://keycloak.api.skapim.com/realms/saml/protocol/saml | ⚠️ |
| SAML_IDP_SLO_URL | IdP SLO URL (フォールバック) | https://keycloak.api.skapim.com/realms/saml/protocol/saml | ⚠️ |
SAML 보안 설정
| 環境変数 | 説明 | 例 | デフォルト | 必須 |
|---|---|---|---|---|
| SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONS | アサーション署名の必要性 | true | true | ⚠️ |
| SAML_SECURITY_REQUIRE_SIGNED_RESPONSES | レスポンス署名の必要性 | true | true | ⚠️ |
- ✅: 必須設定
- ⚠️: 任意設定 (デフォルト使用可能または選択肢)
배포용 k8s deploy 전체 예시
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: apim-tenant-manager-deployment
labels:
app: apim-tenant-manager
spec:
replicas: 1
selector:
matchLabels:
app: apim-tenant-manager
template:
metadata:
labels:
app: apim-tenant-manager
spec:
containers:
- name: apim-tenant-manager
image: registry.example.com/apim-tenant-manager:latest
ports:
- containerPort: 8080
env:
# プロファイル設定 - name: SPRING_PROFILES_ACTIVE
value: "k8s_multi"
# ========== LDAP設定 ==========- name: LDAP_SERVER_URL
value: "ldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_DN
value: "CN=Apim,OU=Users,DC=skbb,DC=co,DC=kr"
- name: LDAP_MANAGER_PASSWORD
valueFrom:
secretKeyRef:
name: ldap-secret
key: manager-password
- name: LDAP_USER_DN_PATTERNS
value: "cn={0},OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_SEARCH_BASE
value: "OU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr"
- name: LDAP_GROUP_ROLE_ATTRIBUTE
value: "cn"
# ========== SAML SP設定 ==========- name: SAML_SP_ENTITY_ID
value: "apim-tenant-manager-v3"
- name: SAML_SP_KEYSTORE_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: keystore-password
- name: SAML_SP_PRIVATE_KEY_PASSWORD
valueFrom:
secretKeyRef:
name: saml-secret
key: private-key-password
# ========== SAML IdP設定 ==========- name: SAML_IDP_METADATA_URL
value: "file:/etc/config/idp-metadata.xml"
- name: SAML_IDP_ENTITY_ID
value: "https://keycloak.api.skapim.com/realms/saml"
- name: SAML_IDP_SSO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"
- name: SAML_IDP_SLO_URL
value: "https://keycloak.api.skapim.com/realms/saml/protocol/saml"
========== SAMLセキュリティ設定 ==========- name: SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONS
value: "true"
- name: SAML_SECURITY_REQUIRE_SIGNED_RESPONSES value: "true"
========== ボリュームマウント ==========volumeMounts:
- name: idp-metadata mountPath: /etc/config readOnly: true
volumes:
- name: idp-metadata configMap: name: idp-metadata-configmap
### <b>主な特徴</b> \{#主な-特徴}
1. <b>同時サポート</b>: LDAPとSAMLの二つの認証方式を同時に有効化
1. <b>独立セッション</b>: 各認証方式ごとに独立したセッション管理
1. <b>選択的ログイン</b>: ユーザーがログイン時に認証方式を選択可能
1. <b>セッション制限</b>: LDAPとSAMLそれぞれ1つずつ、合計2つの最大セッションを許可
### <b>注意事項</b> \{#注意事項}
- LDAPとSAMLのすべての必須環境変数を設定する必要があります
- Secretは必ずKubernetes Secretとして管理
- IdPメタデータはConfigMapまたはURLで提供可能
- SESSION_SECUREはHTTPS環境でのみtrueに設定
---
## <b>フロントエンド設定 (BFFコンソール)</b> \{#フロントエンド-設定-(bff-コンソール)}
### <b>3.1 ドメイン別認証分岐設定</b> \{#3.1-ドメイン別-認証-分岐-設定}
### <b>設定ページアクセス</b> \{#設定-ページ-アクセス}
1. APIMコンソールに管理者権限でログイン
1. 左側のメニューで<b>設定</b>をクリック
1. <b>ドメイン別認証方式分岐</b>セクションまでスクロール
### <b>ドメイン別認証分岐を有効化</b> \{#ドメイン別-認証-分岐-有効化}
1. <b>ドメイン別認証方式分岐</b>スイッチを<b>ON</b>に設定
1. このスイッチがOFFの場合、すべてのドメインで基本認証方式が使用されます
---
### <b>3.2 SAML認証設定</b> \{#3.2-saml-認証-設定}
### <b>SAML認証を使用するドメイン設定</b> \{#saml-認証を-使用する-ドメイン-設定}
1. <b>SAML認証コンソールドメイン</b>スイッチを<b>ON</b>に設定
1. <b>SAMLコンソールドメイン</b>フィールドにドメインを入力
- 例: console1.xxx.com
### <b>IDPログアウト有効化設定</b> \{#idp-ログアウト-有効化-設定}
1. SAMLドメインを設定した後、<b>IDPログアウト有効化</b>チェックボックスが表示されます
1. IDPが社内システムなど重要なシステムである場合、チェックボックスを<b>チェック</b>します
1. チェックすると:
- APIMでログアウトボタンが自動的に隠されます
- セッションの期限切れなどのエラーが発生した場合、エラーメッセージは表示されません
- 自動的にログアウト処理が行われ、ログインページに移動します
---
### <b>3.3 LDAP認証設定</b> \{#3.3-ldap-認証-設定}
### <b>LDAP認証を使用するドメイン設定</b> \{#ldap-認証を-使用する-ドメイン-設定}
1. <b>LDAP(AD)認証コンソールドメイン</b>スイッチを<b>ON</b>に設定
1. <b>LDAP(AD)コンソールドメイン</b>フィールドにドメインを入力
- 例: console2.xxx.com
### <b>注意事項</b> \{#注意事項}
- プロトコル(http://, https://)とポート番号は入力しないでください
- パス(/path)は入力しないでください
<b>正しい入力例:</b>
- ✅ console1.xxx.com
- ✅ apim.company.com
- ✅ console.example.co.kr
<b>間違った入力例:</b>
- ❌ https://console1.xxx.com
- ❌ console1.xxx.com:8080
- ❌ console1.xxx.com/path
### <b>設定保存</b> \{#設定-保存}
1. すべての設定を完了した後、<b>保存</b>ボタンをクリック
1. 保存成功メッセージを確認
1. 設定が即座に適用されます (再起動不要)
### <b>設定確認</b> \{#設定-確認}
設定が正しく保存されたか確認:
1. 設定ページをリフレッシュ
1. 入力したドメインとスイッチの状態を確認
1. 他のブラウザやシークレットモードでそのドメインにアクセスし、認証方式を確認
---
## <b>主な機能</b> \{#主な-機能}
### <b>SAMLドメインでの動作 (IDPログアウト有効化ON)</b> \{#saml-ドメインでの-動作-(idp-ログアウト-有効化-on)}
### <b>1. ログアウトボタン隠し</b> \{#1.-ログアウト-ボタン-隠し}
- IDPログアウト有効化が<b>ON</b>の時のみ、ログアウトボタンが自動的に隠されます
- SAML認証はIDP(Identity Provider)でセッションを管理するため、別途ログアウトボタンは必要ありません
- ユーザーはIDPで直接ログアウトできます
### <b>2. ログアウト処理</b> \{#2.-ログアウト-処理}
- SAMLドメインでログアウトが必要な場合:
- IDPで直接ログアウト
- またはブラウザセッションを終了
- システムが自動的にSAMLログアウトエンドポイントを呼び出します
### <b>3. エラーメッセージ処理</b> \{#3.-エラーメッセージ-処理}
- IDPログアウト有効化が<b>ON</b>の時、セッションの期限切れなどのエラーが発生した場合:
- "セッションが終了しました。ログインが必要です。"メッセージは<b>表示されません</b>
- 自動的にログアウト処理が行われ、ログインページに移動します
- これはSAML認証の特性上、IDPでセッションを管理しているためです
### <b>SAMLドメインでの動作 (IDPログアウト有効化OFF)</b> \{#saml-ドメインでの-動作-(idp-ログアウト-有効化-off)}
- ログアウトボタンが正常に表示されます
- エラーが発生した場合、一般的なエラーメッセージが表示されます
- 一般的な認証方式と同様に動作します
### <b>一般ドメインでの動作</b> \{#一般-ドメインでの-動作}
- ログアウトボタンが正常に表示されます
- エラーが発生した場合、一般的なエラーメッセージが表示されます
- 基本認証方式(ベーシック)が使用されます
---
## <b>環境変数設定</b> \{#環境-変数-設定}
### <b>BFFフロントエンド必須環境変数</b> \{#bff-フロントエンド-必須-環境-変数}
SAML認証を使用するには、次の環境変数を設定する必要があります:
### <b>1. 基本ログインURL</b> \{#1.-基本-ログイン-url}
```bash
APIM_LOGIN_URL=https://login.example.com
- 基本認証方式で使用されるログインURL
- すべてのドメインで共通して使用 (SAMLドメインを除く)
2. SAML 로그인 URL (SAML 도메인 사용 시 필수)
APIM_SAML_LOGIN_URL=https://saml-idp.example.com/sso/login
- SAMLドメインで使用されるログインURL
- SAML IDPのログインエンドポイント
- 주의: SAMLドメインを設定したがこの変数がない場合は基本ログインURLが使用されます
3. Tenant Manager URL
APIM_TENANT_MANAGER_URL=https://tenant-manager.example.com
- Tenant ManagerサービスURL
- ログアウト処理時に使用
환경 변수 설정 방법
-
Kubernetes 환경:
- ConfigMapまたはSecretに環境変数を追加
- Deployment YAMLファイルを修正
주의사항
1. 도메인 입력 형식
- ✅ 올바른 형식: console1.xxx.com
- ❌ 잘못된 형식:
- https://console1.xxx.com
- console1.xxx.com:8080
- console1.xxx.com/path
2. 도메인 중복 설정
- 1つのドメインに複数の認証方式を設定しないでください
- 例: console1.xxx.comにSAMLとLDAPを同時に設定してはいけません
3. IDP 로그아웃 활성화 사용 시기
- 활성화 권장: IDPが社内システム、金融システムなど重要なシステムであるとき
- 비활성화 권장: IDPが一般的な外部サービスであるとき
4. 백엔드와 프론트엔드 설정 일치
- バックエンドで k8s_saml プロファイルを使用する場合、フロントエンドでもSAMLドメインを設定する必要があります
- バックエンドで k8s_ldap プロファイルを使用する場合、フロントエンドでもLDAPドメインを設定する必要があります
- バックエンドで k8s_multi プロファイルを使用する場合、フロントエンドでSAMLとLDAPドメインをそれぞれ異なるドメインに設定できます
5. 환경 변수 설정
- SAMLドメインを使用するには必ず APIM_SAML_LOGIN_URL 環境変数をBFFに設定する必要があります
- 環境変数変更後はアプリケーションの再起動が必要です
6. 테스트 방법
- 設定変更後は必ずテストしてください:
- バックエンド設定確認 (Tenant Managerプロファイルおよび環境変数)
- フロントエンド設定確認 (BFFコンソールドメイン設定)
- 設定したドメインにアクセス
- ログインプロセス確認
- ログアウトボタン表示の有無確認 (IDPログアウト活性化ONのとき隠す)
- ログアウト動作確認