LDAP シングルサインオン¶
LDAP(Lightweight Directory Access Protocol)は、さまざまなディレクトリサービスを処理するためのアプリケーションプロトコルです。Microsoft Entra ID は、Microsoft Entra ドメインサービス(AD DS)を通じてこのモードをサポートしています。
Guanceデプロイメントプランは、既に LDAP サービスを利用しているユーザーが、このプロトコルを使用してワンクリックでログインできるようにします。以下は、必要な設定フィールドです。
| フィールド | 説明 |
|---|---|
host |
LDAP サーバーのドメイン名。対応形式: |
port |
サービスポート。host 内のポートで、このパラメータは上書きされます。 |
baseDN |
ベースディレクトリの場所。【フィールド概念の補足】を参照 |
bindDN |
LDAP サービスとの接続確立時に認証に使用するユーザー名情報(DN インターフェース)。 |
searchAttribute |
他のアカウントを検索する際に、アカウントをフィルターするためのエントリ名。このエントリ名は、ユーザーが入力したユーザー名とともに DIT エントリ情報を構成します。(この値により、ユーザー名から一意のユーザーを特定できます) |
bindPassword |
LDAP サービスとの接続確立時に認証に使用するパスワード情報。 |
mapping |
Guance にマッピングする必要があるアカウント属性のフィールドマッピング情報。 LDAP で提供されるアカウント属性に対応する属性値は、通常はリストです。Guance で属性値が配列/リスト構造の場合、デフォルトで最初の要素が値として処理されます。【フィールド概念の補足 > 2. アカウント属性フィールド】を参照 |
フィールド概念の補足
-
ディレクトリ情報ツリー(DIT):DIT はファイルシステムのような階層構造です。エントリを識別するには、エントリを表すリーフからツリーの最上部までの DIT 内のパスを指定する必要があります。このパスは、エントリの識別名(DN)と呼ばれます。
- エントリの識別名(DN):エントリの名前と値のキーと値のペア(カンマ区切り)で構成され、リーフからツリーの最上部までのパスを形成します。エントリの DN は DIT 全体で一意であり、エントリが DIT 内の別のコンテナに移動された場合にのみ変更されます。
-
アカウント属性フィールド:
| Guance のアカウント属性 | Guance 側のフィールド説明 | LDAP サービス側で提供されるアカウント属性で、ldap3 変換後の属性(デフォルトフィールド) |
|---|---|---|
username |
認証サービスにおける、ログインアカウントのメールアドレスフィールド名。必須 | mail |
email |
認証サービスにおける、ログインアカウントのユーザー名フィールド名。必須。値が存在しない場合は、email を取得 |
uid |
mobile |
認証サービスにおける、ログインアカウントの電話番号フィールド名。任意 | mobile |
exterId |
認証サービスにおける、ログインアカウントの一意識別子フィールド名。必須 | uid |
設定の詳細¶
Guance Launcher 名前空間:forethought-core > core に以下の設定を追加します。設定変数の値を適宜調整してください。
# LDAP クライアント設定(設定の主体は https://ldap3.readthedocs.io/en/latest/server.html を参照)
LDAPClientSet:
# LDAP を有効にするかどうか。デフォルトでは無効
enable: false
# server のパラメータ形式は https://ldap3.readthedocs.io/en/latest/server.html に従う
server:
# LDAP サーバーのドメイン名。ドメイン名、ldap://xxx、または ldaps://xxx の形式
host: "ipa.demo1.freeipa.org"
# 接続タイムアウト時間
connect_timeout: 6
# SSL を有効にするかどうかを制御
use_ssl: false
# サーバースキーマおよびサーバー固有情報の読み取り必須かどうかを指定(デフォルトは SCHEMA)。オプション値の説明は https://ldap3.readthedocs.io/en/latest/server.html#server-object を参照
get_info: "SCHEMA"
tls:
# デフォルト値なし。クライアントの秘密鍵を含むファイルのパス
local_private_key_file:
# デフォルト値なし。サーバー証明書のファイルのパス
local_certificate_file:
# デフォルト値なし。認証局(CA)証明書を含むファイルのパス
ca_certs_file:
# デフォルト値なし。使用する暗号スイートを指定する文字列。最新の Python インタプリタに適用され、SSLContext または wrap_socket() メソッド内の暗号を変更できます。古いバージョンでは無視されます。デフォルト値なし
ciphers:
# サーバー証明書の検証必須かどうかを指定。オプション値:CERT_NONE(証明書を無視)、CERT_OPTIONAL(必須ではないが、提供された場合は検証)、CERT_REQUIRED(必須かつ検証)
validate: "CERT_REQUIRED"
# 使用する SSL または TLS のバージョン。次のいずれか:SSLv2、SSLv3、SSLv23、TLSv1(Python 3.3 に基づく。バージョンリストは他の Python バージョンでは異なる場合があります)。現在のデフォルトは TLS 1.2
version: "PROTOCOL_TLSv1_2"
connection:
# デフォルト値なし。Active Directory にアクセスする場合:ldap3 を使用すると、NTLM v2 プロトコルを使用して Active Directory サーバーに接続することもできます。その場合は、ここを NTLM に設定できます
authentication:
# authentication、sasl_mechanism、sasl_credentials はここでは https://ldap3.readthedocs.io/en/latest/bind.html?highlight=Active%20Directory#digest-md5 に従う必要があります
# デフォルト値なし。Active Directory にアクセスする場合、sasl_mechanism は DIGEST_MD5 に設定可能。デフォルト値なし
sasl_mechanism:
# Active Directory にアクセスする場合に必要
# DIGEST-MD5 メカニズムを使用するには、sasl_credentials として 4 値または 5 値のタプルを渡す必要があります:(realm、user、password、authz_id、enable_signing)。使用しない場合、'realm'、'authz_id'、'enable_signing' には None を渡すことができます。
sasl_credentials:
# 標準接続に加えて TLS を有効にするかどうか。true の場合、ldap との接続確立後に TLS を確認して有効化します。
startTls: false
baseDN: "dc=demo1,dc=freeipa,dc=org"
bindDN: "uid=admin,cn=users,cn=accounts,dc=demo1,dc=freeipa,dc=org"
bindPassword: "Secret123"
# アカウント検索に使用する属性。方法1:`searchAttribute: uid` 属性フィールド名のみを指定。方法2:`searchAttribute: "(uid={username})"` カスタムフィルタステートメント。この方法では、括弧と中括弧内の username が必須です。
# 注意:AD ユーザーの場合は、通常 sAMAccountName に設定します。
searchAttribute: "uid"
# アカウント検索時、アカウント情報に対応するクラス名。注意:接続先が Microsoft AD 上の LDAP の場合は、ここは person にする必要があります。
# 確認方法:`ldapsearch`(サードパーティの ldap 接続ツール)をインストールし、コマンド `ldapsearch -x -H ldap://xxx.cn:389 -D "bindDN情報" -w "bindPassword情報" -b "baseDN内容" "(cn=目標ユーザー)"` を実行します。返された結果の objectClass が選択可能なリストです。
personObjectClass: "inetOrgPerson"
mapping:
# 認証サービスにおける、ログインアカウントのユーザー名フィールド名。必須。値が存在しない場合は、email を取得
username: uid
# 認証サービスにおける、ログインアカウントのメールアドレスフィールド名。必須
email: mail
# 認証サービスにおける、ログインアカウントの電話番号フィールド名。任意
mobile: mobile
# 認証サービスにおける、ログインアカウントの一意識別子フィールド名。必須
exterId: uid
SSL を有効にせず、内部ネットワークから LDAP サービスにアクセスする場合の設定例:
# LDAP クライアント設定(設定の主体は https://ldap3.readthedocs.io/en/latest/server.html を参照)
LDAPClientSet:
# LDAP を有効にするかどうか。デフォルトでは無効
enable: true
# server のパラメータ形式は https://ldap3.readthedocs.io/en/latest/server.html に従う
server:
# LDAP サーバーのドメイン名。ドメイン名、ldap://xxx、または ldaps://xxx の形式
# ローカル開発アドレス、hosts にバインド:172.16.211.111 openldap-server
host: "<域名 、 协议+域名+端口>"
# サーバースキーマおよびサーバー固有情報の読み取り必須かどうかを指定(デフォルトは SCHEMA)。オプション値の説明は https://ldap3.readthedocs.io/en/latest/server.html#server-object を参照
get_info: "ALL"
# ベース DN 情報
baseDN: "<基础DN>"
# クライアント接続確立時にバインドする DN
bindDN: "<客户端建立连接时绑定的DN>"
# bindDN に対応するパスワード
bindPassword: "<与 bindDN 对应的密码>"
# アカウント検索に使用する属性
searchAttribute: cn
# アカウント検索時、アカウント情報に対応するクラス名。注意:接続先が Microsoft AD 上の LDAP の場合は、ここは person にする必要があります。
# 確認方法:`ldapsearch`(サードパーティの ldap 接続ツール)をインストールし、コマンド `ldapsearch -x -H ldap://xxx.cn:389 -D "bindDN情報" -w "bindPassword情報" -b "baseDN内容" "(cn=目標ユーザー)"` を実行します。返された結果の objectClass が選択可能なリストです。
personObjectClass: "inetOrgPerson"
# アカウント属性が以下の表と一致しない場合は、調整が必要です
mapping:
# 認証サービスにおける、ログインアカウントのユーザー名フィールド名。必須。値が存在しない場合は、email を取得
username: cn
# 認証サービスにおける、ログインアカウントのメールアドレスフィールド名。必須
email: mail
# 認証サービスにおける、ログインアカウントの電話番号フィールド名。任意
mobile: mobile
# 認証サービスにおける、ログインアカウントの一意識別子フィールド名。必須
exterId: cn
LDAP シングルサインオンを使用して Guance にログインする¶
上記の設定を追加後、LDAP シングルサインオンを使用して Guance にログインできるようになります。
1)Guanceデプロイメントプランのログインアドレスを開き、ログインページで LDAP ログイン を選択します。
2)LDAP サーバーで使用するユーザー名とパスワードを入力します。
3)Guance の対応するワークスペースにログインします。
