メインコンテンツまでスキップ
バージョン: Latest(v3.0) 🔥

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を通じた認証

全体設定フロー

  1. 백엔드 설정 (Kubernetes): Tenant Managerに認証プロファイルと環境変数を設定
  2. 프론트엔드 설정 (BFF 콘솔): ドメイン別認証方式分岐設定

使用シナリオ

예시 1: SAML 인증 도메인 (IDP 로그아웃 활성화)
  • バックエンド: k8s_saml プロファイル使用
  • フロントエンド: console1.xxx.com → SAMLドメイン設定、IDPログアウトを有効化ON
  • 特徴: ログアウトボタンが表示されない、エラーメッセージを削除
예시 2: SAML 인증 도메인 (IDP 로그아웃 비활성화)
  • バックエンド: k8s_saml プロファイル使用
  • フロントエンド: console1.xxx.com → SAMLドメイン設定、IDPログアウトを有効化OFF
  • 特徴: 一般認証と同様に動作(ログアウトボタン表示、エラーメッセージ表示)
예시 3: LDAP 인증 도메인
  • バックエンド: k8s_ldap プロファイル使用
  • フロントエンド: console2.xxx.com → LDAPドメイン設定
예시 4: 기본 인증 도메인
  • バックエンド: デフォルトプロファイル使用
  • フロントエンド: 設定されていないドメイン
  • 認証方式: デフォルトベーシック認証

バックエンド設定(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_URLLDAPサーバーのアドレスldap://skbb.co.kr:389/DC=skbb,DC=co,DC=krldap://goblin-ldap.goblin-ldap.svc.cluster.local:389/dc=skapim,dc=com
LDAP_MANAGER_DNLDAP管理者DN (Distinguished Name)CN=Apim,OU=Users,DC=skbb,DC=co,DC=krcn=admin,dc=skapim,dc=com
LDAP_MANAGER_PASSWORDLDAP管理者パスワードakemfdj1@-

LDAP 인증 설정

環境変数説明基本値必須
LDAP_USER_DN_PATTERNSユーザーDNパターン (0はユーザー名に置き換えられる)cn=0,OU=partners,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=krcn=0,ou=people⚠️
LDAP_GROUP_SEARCH_BASEグループ検索の基本DNOU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=krou=groups⚠️
LDAP_GROUP_ROLE_ATTRIBUTEグループ役割属性名cncn⚠️
LDAP_PASSWORD_ATTRIBUTEパスワード属性名userPassworduserPassword⚠️

배포용 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_IDSP Entity ID (ユニーク識別子)apim-tenant-managerapim-tenant-manager⚠️
SAML_SP_METADATA_URLSPメタデータURL/saml/metadata/saml/metadata⚠️
SAML_SP_SSO_URLSP SSO URL/saml/sso/saml/sso⚠️
SAML_SP_SLO_URLSP SLO (Single Logout) URL/saml/slo/saml/slo⚠️
SAML_SP_ACS_URLSP ACS (Assertion Consumer Service) URL/saml/acs/saml/acs⚠️
SAML_SP_KEYSTORE_LOCATIONキーストアファイルの場所classpath:saml/keystore.jksclasspath:saml/keystore.jks⚠️
SAML_SP_KEYSTORE_PASSWORDキーストアパスワードchangeit-
SAML_SP_PRIVATE_KEY_PASSWORDプライベートキーのパスワードchangeit-
SAML_SP_CERTIFICATE_ALIAS証明書エイリアスsamlsaml⚠️

SAML IdP (Identity Provider) 설정

環境変数説明基本値必須
SAML_IDP_METADATA_URLIdPメタデータソース (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.xmlhttps://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptor
SAML_IDP_ENTITY_IDIdP Entity ID (メタデータパース失敗時のフォールバック)https://keycloak.api.skapim.com/realms/saml-⚠️
SAML_IDP_SSO_URLIdP SSO URL (メタデータパース失敗時のフォールバック)https://keycloak.api.skapim.com/realms/saml/protocol/saml-⚠️
SAML_IDP_SLO_URLIdP SLO URL (メタデータパース失敗時のフォールバック)https://keycloak.api.skapim.com/realms/saml/protocol/saml-⚠️
SAML_IDP_CERTIFICATE_LOCATIONIdP証明書ファイルの場所classpath:saml/idp-certificate.crtclasspath:saml/idp-certificate.crt⚠️

SAML 보안 설정

環境変数説明基本値必須
SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONSAssertion署名の必要性truetrue⚠️
SAML_SECURITY_REQUIRE_SIGNED_RESPONSESResponse署名の必要性truetrue⚠️
SAML_SECURITY_REQUIRE_ENCRYPTED_ASSERTIONSAssertion暗号化の必要性falsefalse⚠️
SAML_SECURITY_ASSERTION_VALIDITY_TIMEAssertion有効時間 (秒)300300 (5分)⚠️
SAML_SECURITY_RESPONSE_VALIDITY_TIMEResponse有効時間 (秒)300300 (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

방법 2: YAML 파일로 생성

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 -

방법 2: YAML 파일로 업데이트
kubectl apply -f idp-metadata-configmap.yaml

방법 3: 직접 편집
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_URLLDAPサーバーアドレスldap://skbb.co.kr:389/DC=skbb,DC=co,DC=kr
LDAP_MANAGER_DNLDAP管理者DNCN=Apim,OU=Users,DC=skbb,DC=co,DC=kr
LDAP_MANAGER_PASSWORDLDAP管理者パスワード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グループ検索基本DNOU=Groups,OU=HQ,OU=SKB,DC=skbb,DC=co,DC=kr⚠️
LDAP_GROUP_ROLE_ATTRIBUTEグループ役割属性名cn⚠️

SAML SP 설정

環境変数説明必須
SAML_SP_ENTITY_IDSP Entity IDapim-tenant-manager-v3⚠️
SAML_SP_KEYSTORE_PASSWORDキーストアパスワードchangeit (Secret推奨)
SAML_SP_PRIVATE_KEY_PASSWORDプライベートキーのパスワードchangeit (Secret推奨)

SAML IdP 설정

環境変数説明必須
SAML_IDP_METADATA_URLIdPメタデータソース (URL/ファイル/ConfigMap)URL: https://keycloak.api.skapim.com/realms/saml/protocol/saml/descriptorファイル: file:/etc/config/idp-metadata.xml
SAML_IDP_ENTITY_IDIdP Entity ID (フォールバック)https://keycloak.api.skapim.com/realms/saml⚠️
SAML_IDP_SSO_URLIdP SSO URL (フォールバック)https://keycloak.api.skapim.com/realms/saml/protocol/saml⚠️
SAML_IDP_SLO_URLIdP SLO URL (フォールバック)https://keycloak.api.skapim.com/realms/saml/protocol/saml⚠️

SAML 보안 설정

環境変数説明デフォルト必須
SAML_SECURITY_REQUIRE_SIGNED_ASSERTIONSアサーション署名の必要性truetrue⚠️
SAML_SECURITY_REQUIRE_SIGNED_RESPONSESレスポンス署名の必要性truetrue⚠️
표 기호 설명:
  • ✅: 必須設定
  • ⚠️: 任意設定 (デフォルト使用可能または選択肢)

배포용 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
  • ログアウト処理時に使用

환경 변수 설정 방법

  1. Kubernetes 환경:
    • ConfigMapまたはSecretに環境変数を追加
    • Deployment YAMLファイルを修正

주의사항

1. 도메인 입력 형식

  • ✅ 올바른 형식: console1.xxx.com
  • ❌ 잘못된 형식:

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. 테스트 방법

  • 設定変更後は必ずテストしてください:
    1. バックエンド設定確認 (Tenant Managerプロファイルおよび環境変数)
    2. フロントエンド設定確認 (BFFコンソールドメイン設定)
    3. 設定したドメインにアクセス
    4. ログインプロセス確認
    5. ログアウトボタン表示の有無確認 (IDPログアウト活性化ONのとき隠す)
    6. ログアウト動作確認