概要
TDVでは標準でcompositeというドメインが利用可能ですが、すでに自社でActive DirectoryなどのLDAPサーバーを運用されている場合は、それをTDV Serverに連携させることで、ユーザー・グループの二重管理を回避することができます。
この記事ではTDV ServerにLDAP連携設定を実施するための手順について説明します。
検証環境
製品 | バージョン | 備考 |
---|---|---|
TDV | 8.5.2 | Windows Server 2019 で実行 |
LDAP連携の流れ
LDAP連携の大まかな流れは以下のとおりです。
-
(任意)TDV信頼済みキーストアへの証明書チェーン登録
- 連携先のLDAPサーバが、自己署名証明書もしくは信頼されていない認証局によって署名された証明書を利用している場合のみ実施します。
- 信頼された認証局によって署名された証明書が利用されている場合や、ldapsプロトコルを利用せずldapプロトコルを利用する場合はこの手順を実施する必要はありません。
-
(任意)ldap.properties 編集
- LDAP連携に利用する管理者ユーザーや追加対象のグループが ldap.properties に記述されているデフォルトのフィルタ条件ではマッチしない場合に編集する必要があります。
-
ドメイン追加
- TDV Manager(ウェブブラウザ)からドメイン(LDAPサーバ)を追加します。
-
外部グループ追加
- 追加したドメイン内に存在するグループをTDVに追加します。
-
ログイン確認
- 追加したグループ内に存在するユーザーでTDV Server にログインできることを確認します。
本手順における前提
以降の手順において例として利用するActive Directory について説明します。
LDAP接続に利用する管理者ユーザー
以下の tibco ユーザーを利用します。
このユーザーはいずれの ou にも所属していません。
TDVに外部グループとして追加するグループとそのメンバーであるユーザー
以下のような ou=tdv-test,ou=tdv-test-sub
に所属する tdv-test-group01 グループと そのグループのメンバーである tdv-test-user01 ユーザーを利用します。
(任意)TDV信頼済みキーストアへの証明書チェーン登録
連携先のLDAPサーバが、自己署名証明書もしくは信頼されていない認証局によって署名された証明書を利用している場合のみ、TDV信頼済みキーストアへ証明書チェーンを登録します。
信頼された認証局によって署名された証明書が利用されている場合や、ldapsプロトコルを利用せずldapプロトコルを利用する場合はこの手順を実施する必要はありません。
コマンドプロンプト起動
コマンドプロンプト(Linuxの場合ターミナル)を管理者権限で開きます。
証明書チェーン登録状態の確認(登録前)
事前に、証明書チェーンがすでに登録されていないか確認を行います。
コマンド:
<TDVインストール先パス>\jdk\bin\keytool.exe -list -keystore <TDVインストール先パス>\conf\server\security\cis_server_truststore.jks -storepass changeit | findstr <エイリアス名>
コマンド例:
"C:\Program Files\TIBCO\TDV Server 8.5\jdk\bin\keytool.exe" -list -keystore "C:\Program Files\TIBCO\TDV Server 8.5\conf\server\security\cis_server_truststore.jks" -storepass changeit | findstr ad-self.xxx.com
登録されていないことが確認できましたら、次の手順に進みます。
信頼済みキーストアのバックアップ
作業の前に <TDVインストール先パス>\conf\server\security\cis_server_truststore.jks
をコピーしてバックアップを取得しておきます。
証明書チェーンの登録
コマンド:
<TDVインストール先パス>\jdk\bin\keytool.exe -import -alias <エイリアス名> -trustcacerts -file <サーバ証明書(.cer)のパス> -keystore <TDVインストール先パス>\conf\server\security\cis_server_truststore.jks -storepass changeit
コマンド例:
"C:\Program Files\TIBCO\TDV Server 8.5\jdk\bin\keytool.exe" -import -alias ad-self.xxx.com -trustcacerts -file C:\ssl_cert\server.cer -keystore "C:\Program Files\TIBCO\TDV Server 8.5\conf\server\security\cis_server_truststore.jks" -storepass changeit
実行結果例:
所有者: CN=ad-self.xxx.com
発行者: CN=ad-self.xxx.com
シリアル番号: 727f268ee05896994e06ce6d4bda6202
有効期間の開始日: Wed Feb 10 15:46:59 JST 2021終了日: Tue Feb 10 15:56:59 JST 2026
証明書のフィンガプリント:
SHA1: 55:E7:4D:24:8E:8A:FE:6E:A0:7B:38:AB:B6:71:EC:EB:22:30:FC:50
SHA256: 03:B3:D7:58:03:60:A2:F5:7D:8C:35:CD:30:64:E0:75:5A:A2:D3:A7:5C:0E:0A:48:EB:01:EC:0F:CC:16:13:BD
署名アルゴリズム名: SHA256withRSA
サブジェクト公開キー・アルゴリズム: 2048ビットRSAキー
バージョン: 3
拡張:
#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
clientAuth
serverAuth
]
#2: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
DigitalSignature
Key_Encipherment
]
#3: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
DNSName: ad-self.xxx.com
]
#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: FE 8D 44 5F 9A 87 80 F0 09 9A 73 9B 38 8C 61 83 ..D_......s.8.a.
0010: 0F 1B 6A 6B ..jk
]
]
この証明書を信頼しますか。 [いいえ]: y
証明書がキーストアに追加されました
LDAPサーバーの設定によっては、以下のように
- Root(ルート証明書)
- Intermediate(中間証明書)
- Server(サーバー証明書)
の順番ですべての証明書の登録が必要となる場合もありますので、設定作業の前にLDAP管理者に相談することを推奨します。
そのような場合のコマンド例は以下のとおりです。
"C:\Program Files\TIBCO\TDV Server 8.5\jdk\bin\keytool.exe" -import -alias ldapcert1 -trustcacerts -file C:\ssl_cert\Root.cer -keystore "C:\Program Files\TIBCO\TDV Server 8.5\conf\server\security\cis_server_truststore.jks" -storepass changeit
"C:\Program Files\TIBCO\TDV Server 8.5\jdk\bin\keytool.exe" -import -alias ldapcert2 -trustcacerts -file C:\ssl_cert\Intermediate.cer -keystore "C:\Program Files\TIBCO\TDV Server 8.5\conf\server\security\cis_server_truststore.jks" -storepass changeit
"C:\Program Files\TIBCO\TDV Server 8.5\jdk\bin\keytool.exe" -import -alias ldapcert3 -trustcacerts -file C:\ssl_cert\Final.cer -keystore "C:\Program Files\TIBCO\TDV Server 8.5\conf\server\security\cis_server_truststore.jks" -storepass changeit
証明書チェーン登録状態の確認(登録後)
証明書チェーンが正常に登録されていることを確認します。
コマンド:
<TDVインストール先パス>\jdk\bin\keytool.exe -list -keystore <TDVインストール先パス>\conf\server\security\cis_server_truststore.jks -storepass changeit | findstr <エイリアス名>
コマンド例:
"C:\Program Files\TIBCO\TDV Server 8.5\jdk\bin\keytool.exe" -list -keystore "C:\Program Files\TIBCO\TDV Server 8.5\conf\server\security\cis_server_truststore.jks" -storepass changeit | findstr ad-self.xxx.com
以下のように登録されたサーバー証明書が表示されることを確認します。
ad-self.xxx.com,2022/03/14, trustedCertEntry,
TDV Server再起動
証明書チェーンの登録後、TDVサーバを再起動します。
(任意)ldap.properties 編集
LDAPのユーザー・グループ情報を取得するための検索クエリは ldap.properties というファイルにより制御されます。
本手順において利用する、TDVに外部グループとして追加するグループとそのメンバーであるユーザー は、デフォルトの ldap.properties のフィルタ条件ではマッチしないため、以下のようにいくつかのプロパティを変更しておく必要があります。
activedirectory.all.users.search.context
変更前(デフォルト):
activedirectory.all.users.search.context=cn=users
変更後:
activedirectory.all.groups.search.context=cn=users|ou=tdv-test
activedirectory.user.search.context
変更前(デフォルト):
activedirectory.user.search.context=cn=users
変更後:
activedirectory.user.search.context=cn=users|ou=tdv-test
activedirectory.user.groups.search.context
変更前(デフォルト):
activedirectory.user.groups.search.context=cn=users
変更後:
activedirectory.user.groups.search.context=cn=users|ou=tdv-test
ldap.properties を変更する場合は事前にバックアップしておくことを推奨します。
上記の例では各フィルタ条件に cn=users|
を残していますが、省略頂いても問題ありません。
ldap.properties は変更し保存した時点で有効となるため、TDV Server を再起動する必要はありません。
連携先のLDAPサーバーのユーザー・グループの構成によって ldap.properties に記述すべき内容は異なるため、本記事やTIBCO社から提供されているオンラインドキュメントを参考に修正してください。
ドメイン追加
ウェブブラウザから TDV Manager に管理者ユーザーでログイン後、「セキュリティ > ドメイン管理」 に移動し、以下のようにドメインを追加します。
ドメインが正常に追加されると以下のように表示されます。
この時点では、連携したLDAPドメイン内のどのグループもTDV側に追加されておらず、TDVはLDAPドメイン内のどのグループも認識できていない状態です。
外部グループ追加
「ドメイン管理」画面でドメインを選択した状態で「外部グループ編集」ボタンをクリックし、表示されるグループリストからTDVに追加したいグループを選択して追加します。
グループは複数選択することも可能です。
ldap.properties について
表示されるグループ一覧に追加したいグループが表示されない場合は、ldap.properties の設定を見直し、フィルタ条件に問題がないことを確認してください。
また、必要に応じて ldap.properties の内容を変更してください。
追加したグループ内のユーザーについて
グループを追加しただけでは、そのグループ内のユーザーはまだTDVには存在していません。
そのユーザーがTDVに初回ログインした時点で初めてTDV内にそのユーザーオブジェクトが作成されます。
したがって、TDV上のLDAPドメインに外部グループを追加しても、そのグループ内のユーザーが一人もTDVにログインしない場合、TDVはそのグループを「ユーザーが一人も存在しない」グループと認識します。
以上のことから、TDVにおける権限管理は ユーザー単位ではなく、グループ単位で行うことが推奨されています。
グループへの権限付与
ログイン確認のために、追加したグループに対して「アクセスツール」権限を付与しておきます。
ログイン確認
TDV Manager から 先ほど追加した外部グループ内のユーザーでログインします。
正常にログインできることを確認します。
OUをTDV上でグループとして利用する場合
ここまではセキュリティグループを外部グループとして利用する手順について説明しましたが、OUもTDV上で外部グループとして利用することができます。
ここでは、以下の図のような OU=tibco配下のOU=eastとOU=westをグループとして追加する手順を説明します。
LDAPドメインの追加まではこれまでと同じですが、ldap.properties の記述内容を以下のように変更する必要があります。
ldap.properties編集
activedirectory.all.users.search.context
変更前(デフォルト):
activedirectory.all.users.search.context=cn=users
変更後:
activedirectory.all.users.search.context=ou=sales,ou=tibco
activedirectory.all.groups.search.context
変更前(デフォルト):
activedirectory.all.groups.search.context=cn=users
変更後:
activedirectory.all.groups.search.context=ou=sales,ou=tibco
activedirectory.all.groups.filter
変更前(デフォルト):
activedirectory.all.groups.filter=(&(objectclass=group)(objectCategory=group))
変更後:
activedirectory.all.groups.filter=objectclass=organizationalUnit
activedirectory.all.groups.groupname.attribute
変更前(デフォルト):
activedirectory.all.groups.groupname.attribute=cn
変更後:
activedirectory.all.groups.groupname.attribute=ou
activedirectory.user.search.context
変更前(デフォルト):
activedirectory.user.search.context=cn=users
変更後:
activedirectory.user.search.context=ou=sales,ou=tibco
activedirectory.user.groups.search.context
変更前(デフォルト):
activedirectory.user.groups.search.context=cn=users
変更後:
activedirectory.user.groups.search.context=ou=sales,ou=tibco
activedirectory.user.groups.filter
変更前(デフォルト):
activedirectory.user.groups.filter=(&(member=USERDN)(objectclass=group)(objectCategory=group))
変更後:
activedirectory.user.groups.filter=objectclass=organizationalUnit
activedirectory.user.groups.search.context
変更前(デフォルト):
activedirectory.user.groups.groupname.attribute=cn
変更後:
activedirectory.user.groups.groupname.attribute=ou
動作確認
ドメイン管理画面で対象のドメインを選択した状態で外部グループ編集ボタンをクリックし、OUがグループとして表示されていることを確認します。
LDAPオブジェクトがマルチバイトの場合
TDV8.7以降のバージョンでは、OUなどのオブジェクトが以下のようにマルチバイトで定義されている場合でも検索することができます。
ldap.propertiesには以下のように記述します。
OU=人事
直下のgroup001
が外部グループとして検索できています。