Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OpenLDAP 外部連携モジュール

UCIDM は OpenLDAP に対して ID 連携できます。

OpenLDAP 外部連携設定手順

事前準備

外部連携先の OpenLDAP をご用意下さい。また、UCIDM 稼働サーバーから外部連携先 LDAP への以下の接続情報をご準備ください。

  • 接続する外部連携先 LDAP への URL
  • 外部連携先 LDAP の Bind DN
  • 外部連携先 LDAP の Bind DN のパスワード

コンテナの設定

OpenLDAP 外部連携モジュールはコンテナとして稼働させます。次のように compose.yml に設定します。entrypoint では次の設定ができます。

  • -verbose: デバッグログを出力
  • -jsonl: JSON 形式でログを出力
  consumer-ldap:
    depends_on:
      rabbitmq:
        condition: service_healthy
    container_name: consumer-ldap
    image: docker.io/osstech/ucidm-consumer:latest
    logging: *default-logging
    ports:
      - 7099:7099
    volumes:
      - type: bind
        source: ./server-data
        target: /ucidm
        bind:
          create_host_path: false
    entrypoint:
      - ./bin/app-main
      - -jsonl
    environment:
      TZ: "${TZ}"
      DESTINATION_ID: "ldap-001"
      MONGO_USER: "${MONGO_USER}"
      MONGO_PASSWORD: "${MONGO_PASSWORD}"
      MONGO_DATABASE: "${MONGO_DATABASE}"
      MONGO_HOSTS: "${MONGO_HOSTS}"
      MONGO_REPLICA_SET: "${MONGO_REPLICA_SET}"
      RABBITMQ_USER: "${RABBITMQ_USER}"
      RABBITMQ_PASSWORD: "${RABBITMQ_PASSWORD}"
      RABBITMQ_HOST: "${RABBITMQ_HOST}"
      LDAP_URL: "${LDAP1_URL}"
      LDAP_BIND_DN: "${LDAP1_BIND_DN}"
      LDAP_BIND_PASSWORD: "${LDAP1_BIND_PASSWORD}"
    restart: "always"

ここで参照する環境変数は ucidm.env に設定します。

環境変数の設定

環境変数既定値説明
TZ任意タイムゾーン情報
DESTINATION_ID任意外部連携先 ID 管理画面で作成した外部連携先 ID を指定
MONGO_USER任意接続する MongoDB のユーザ名
MONGO_PASSWORD任意接続する MongoDB のパスワード
MONGO_DATABASE任意ucidm接続する MongoDB のデータベース
MONGO_HOSTS任意接続する MongoDB のホスト
MONGO_REPLICA_SET任意接続する MongoDB のレプリカセットの名前
RABBITMQ_USER任意接続する RabbitMQ のユーザ名
RABBITMQ_PASSWORD任意接続する RabbitMQ のパスワード
RABBITMQ_HOST任意接続する RabbitMQ のホスト
LDAP_URL任意接続する LDAP の URL
(例: ldaps://example.com)
LDAP_BIND_DN任意LDAP の Bind DN
LDAP_BIND_PASSWORD任意LDAP の Bind DN のパスワード
ENABLE_SCRIPT_PASSWORDtrue または falsefalseユーザーパスワード更新時に外部連携の
前処理/後処理スクリプトにパスワードの値を連携するかどうか

OpenLDAP 外部連携設定

管理画面にて OpenLDAP の外部連携設定が行えます。ホーム画面の「外部連携設定」を選択し、外部連携設定一覧画面に遷移します。外部連携設定一覧画面で、登録ボタンを押下することで新規外部連携設定画面が表示されます。

この新規外部連携設定画面の各タブで詳細内容を設定します。設定が完了したら「登録」ボタンを押下することで外部連携設定が作成されます。

外部連携設定作成後は、ルーティング設定 にてこの外部連携設定を適用するユーザーおよびグループを指定して下さい。

外部連携主要情報

OpenLDAP 外部連携の主要情報を指定します。

  • 連携 ID
    • 一意の連携 ID を指定します
  • 外部連携先 ID
    • 上記コンテナの DESTINATION_ID 環境変数で設定した値を指定します
  • 外部連携先 タイプ
    • LDAP

動作設定

OpenLDAP 外部連携の動作設定を行います。設定項目と内容は次になります。

  • TLS の検証をスキップ
    • TLS の検証をスキップするかを指定します
  • グループメンバー用属性名
    • グループメンバーの値が入る属性名を指定します
  • ユーザーステータス設定情報を使用する
    • ユーザープロファイルのステータス設定画面で指定した有効無効設定の情報を利用して、ユーザーのステータスの値を取得する場合は on にします
  • ステータス用属性名
    • 有効無効設定情報を使用しない場合にこちらの設定が使われます
    • OpenLDAP ではユーザのステータス用の属性がなく、OpenLDAP 外部連携モジュールでは、ユーザエントリのパスワードの値を書き換えることで、有効化/無効化の制御をしています
    • マッピング後の属性について、true/false のステータスとして使いたい属性を指定します(有効化の場合は true、無効化の場合は false が割り当てられる必要があります)
    • ステータス用属性に指定した属性については、LDAP のユーザ送信データには含まれません
    • 値が未設定の場合は、連携先 LDAP へのステータス情報の反映は行われません
  • ドライランモード
    • 接続の取得やエントリの検索は行いますが、実際にエントリの追加/変更/削除は行わないモードとなります
    • 主にテスト時の動作確認等に使うことを想定しています
実施しない操作の設定
  • ユーザー追加/更新を行わない
    • OpenLDAP に対してユーザー追加/更新を行わない場合は、この項目をオン(true)にしてください
  • ユーザー削除を行わない
    • OpenLDAP に対してユーザー削除を行わない場合は、この項目をオン(true)にしてください
  • ユーザーパスワード更新を行わない
    • OpenLDAP に対してユーザーパスワード更新を行わない場合は、この項目をオン(true)にしてください
  • グループ追加/更新を行わない
    • OpenLDAP に対してグループ追加/更新を行わない場合は、この項目をオン(true)にしてください
  • グループ削除を行わない
    • OpenLDAP に対してグループ削除を行わない場合は、この項目をオン(true)にしてください
  • グループメンバー追加を行わない
    • OpenLDAP に対してグループメンバー追加を行わない場合は、この項目をオン(true)にしてください
  • グループメンバー削除を行わない
    • OpenLDAP に対してグループメンバー削除を行わない場合は、この項目をオン(true)にしてください

マッピング

OpenLDAP 外部連携の以下マッピング設定を行います。

  • DN マッピング
  • ObjectClass マッピング
  • 属性マッピング

また OpenLDAP 外部連携モジュールでは、パスワード更新時にも属性マッピングを設定できます。

それぞれのマッピング設定について説明します。

DN マッピング

UCIDM で保持するエントリは DN がキーとなり連携されてきます。

この DN の値を、OpenLDAP の DN の値にマッピングする設定ができます。

  • DN 変換先の RDN 属性名
    • 変換後の DN において、最初の要素の属性名を指定します
  • DN の変換先部分
    • 上記変換したい箇所に、変換したい値を指定します
  • DN の変換元部分
    • 変換前の DN にて、変換したい箇所を指定します

例えば、uid=test01,dc=srcldap,dc=com を cn=test01,dc=extldap,dc=com にマッピングしたい場合は、次のように指定します。

  • DN 変換先の RDN 属性名
    • cn
  • DN の変換先部分
    • dc=extldap,dc=com
  • DN の変換元部分
    • dc=srcldap,dc=com

ObjectClass マッピング

連携元からくる ObjectClass のデータを、連携先の OpenLDAP に連携するための ObjectClass にマッピングする設定ができます。

  • 連携先に追加で連携する ObjectClass
    • 連携先 LDAP に追加で連携する ObjectClass を指定します
    • 複数値を指定できます
  • 連携先に連携しない ObjectClass
    • 連携元からくる ObjectClass のデータにて、連携先 LDAP に連携しない ObjectClass を指定します
    • 複数値を指定できます

例えば、連携元から、["top", "inetOrgPerson", "organizationalPerson"] のデータが来た際に、連携先に送信する ObjectClass として、["top", "inetOrgPerson", "posixAccount"] を指定したい場合は、次のように設定します。

  • 連携先に追加で連携する ObjectClass
    • posixAccount
  • 連携先に連携しない ObjectClass
    • organizationalPerson

属性マッピング

次の 属性マッピング設定 を参考にしてください。

以下は OpenLDAP 外部連携のユーザーマッピング設定の一例です。

連携先の属性名連携元の属性名ビルトイン関数名テンプレート文字列固定値
objectClassobjectClass
uiduid
cncn
snsn
givenNamegivenName
mailmail
descriptiondescription
homeDirectory/home/%{uid}
loginShell/bin/bash
uidNumberuidNumber
gidNumbergidNumber

以下は OpenLDAP 外部連携のグループマッピング設定の一例です。

連携先の属性名連携元の属性名ビルトイン関数名テンプレート文字列固定値
objectClassobjectClass
cncn
gidNumbergidNumber
descriptiondescription

以下は OpenLDAP 外部連携のパスワードマッピング設定の一例です。

連携先の属性名連携元の属性名ビルトイン関数名テンプレート文字列固定値
sambaNTPasswordntHash

前処理・後処理スクリプト設定

UCIDM では、外部連携処理の前後で任意のシェルスクリプトを実行することができます。

次の 外部連携の前処理/後処理で実行するスクリプトの配置 を参考に、スクリプトファイルを配置後、外部連携の前処理/後処理で実行するスクリプトの設定 を参考に、実行したいスクリプトファイルを指定してください。

OpenLDAP 外部連携モジュールの留意事項

ユーザステータスの有効化/無効化は、OpenLDAP の userPassword 属性の値を変更することで制御しており、次のような形で値が入ります。

  • ハッシュ化されたパスワードの場合
    • 有効の場合
      • {CRYPT}xxxxxxxx
    • 無効の場合
      • {CRYPT}!xxxxxxxx
  • 平文パスワードの場合
    • 有効の場合
      • xxxxxxxx
    • 無効の場合
      • {DISABLED}xxxxxxxx
Last updated on 2026-03-17 09:27 +0900 (main@47466bb)