<Context docBase="fusionplace.war" path="/fusionplace">
<Environment name="fusionplace/dbms" value="H2" type="java.lang.String"/>
<Environment name="fusionplace/pivot_time_out" value="60000" type="java.lang.Integer"/>
<!-- ... -->
<!-- ここより、LDAP認証機能のための記述項目 -->
<Environment name="fusionplace/authentication_scheme" type="java.lang.String" value="basic_authentication"/>
<Environment name="fusionplace/identity_asserter" type="java.lang.String" value="ldap"/>
<Environment name="fusionplace/identity_asserter_ldap/host" type="java.lang.String" value="directory.example.com"/>
<Environment name="fusionplace/identity_asserter_ldap/username_format" type="java.lang.String" value="uid=${USERNAME},dc=example,dc=com"/>
<!-- ここまで、LDAP認証機能のための記述項目
-->
<!-- ... -->
</Context>
LDAP認証利用のための設定
fusion_place でLDAP認証を有効にするには、fusion_place サーバが動作する Tomcat の設定ファイルにエントリを追加します。設定に際して以下の項目を確認・検討する必要があります。
-
LDAP サーバのホスト名・ポート番号
-
LDAP サーバへの接続に TLS/SSL, SASL (Simple Authentication and Security Layer)[1]、 STARTTLS といったセキュリティ機構を使用するかどうか
-
LDAP サーバへのバインドで使用するユーザの識別名 (Distinguished Name: DN) の形式
設定方法
Tomcat の設定ファイル server.xml
を、LDAP認証に対応するよう修正してください。server.xml
の所在はインストール時指定情報の記録場所をご参照ください。
server.xml
の内容は XML 形式の文書となっていますが、その中の Context 要素(ひとつしかありません)の配下に、いくつかの Environment
要素(JNDI 環境プロパティ)を付け加えることで、LDAP認証機能を利用できるようになります。以下に記述例を挙げます。
設定項目一覧
LDAP認証のための設定項目(すなわち、server.xml 中に指定する Environment 要素)は以下の通りです。
name (JNDI 環境プロパティ名) | type (JNDI 環境プロパティの型) | 設定すべき値の意味 | value (設定可能な値) | 設定値の例 |
---|---|---|---|---|
fusionplace/authentication_scheme |
java.lang.String |
fusion_place クライアントと fusion_place サーバの間の通信に適用される HTTP 認証方式。 LDAP認証利用時には、「Basic 認証」とする必要がある。 |
デフォルト: |
|
fusionplace/identity_asserter |
java.lang.String |
fusion_place サーバが、バックエンドでの認証に適用する認証方式。 LDAP認証利用時には、「LDAP 認証」とする必要がある。 |
LDAP 認証以外の場合、当項目は省略。その場合、バックエンドでの認証方式は HTTP 認証方式と同じとなる。 |
|
fusionplace/use_ldap |
java.lang.Boolean |
fusion_place サーバが、「LDAP 認証」とする際に設定する。 |
デフォルト: |
|
fusionplace/identity_asserter_ldap/host |
java.lang.String |
認証依頼先とする LDAP サーバのホスト名または IP アドレス。 |
ホスト名または IP アドレスとして適切な文字列。 |
|
fusionplace/identity_asserter_ldap/port |
java.lang.Integer |
LDAP サーバのポート番号。 |
ポート番号として適切な整数。 デフォルト: |
|
fusionplace/identity_asserter_ldap/ssl |
java.lang.Boolean |
LDAP over TLS/SSL (LDAPS) の使用有無を指定。 TLS/SSL または STARTTLS を使用する場合、fusion_place サーバが動作する Java 実行環境のキーストアに、LDAP サーバの証明書を発行した CA の証明書を追加する必要があります。 |
デフォルト: |
|
fusionplace/identity_asserter_ldap/username_format |
java.lang.String |
LDAP バインドで使用するユーザ名のフォーマット。 フォーマット文字列中、fusion_place ユーザアカウント名部分を |
文字列 |
|
fusionplace/authentication/system_identity_assertion_enforcement_user_account_names |
java.lang.String |
HTTP 認証方式に適した認証情報照合方法が強制されるユーザアカウント名(カンマ区切り)。 ここで指定されたユーザアカウントは LDAP バインドによる認証の対象外として、fusion_place に登録されたパスワードを用いて認証される。 |
文字列 |
|
fusionplace/identity_asserter_ldap_sasl |
java.lang.Boolean |
SASL の使用/不使用を指定。 |
デフォルト: |
|
fusionplace/identity_asserter_ldap/sasl/mechanism |
java.lang.String |
使用する SASL 機構を指定。 |
デフォルト: |
digest_md5 |
fusionplace/identity_asserter_ldap/starttls |
java.lang.Boolean |
STARTTLS の使用/不使用を指定。 |
デフォルト: |
true |
セキュリティ関係の設定項目について
fusion_place サーバと LDAP サーバとの間の通信の一部または全体を暗号化し認証情報を保護することができます。fusion_place で利用可能なセキュリティ機構とその組み合わせは以下のとおりです。
セキュリティ機構の使用パターン | セキュリティ実現内容 | ||||
---|---|---|---|---|---|
ケース |
TLS/SSL (LDAPS)[2] |
SASL (SASL 機構) |
STARTTLS[2] |
暗号化の範囲 |
必要な LDAP バージョン[3] |
(1) |
なし |
>= LDAPv2 |
|||
(2) |
使用 |
通信全体 |
>= LDAPv2 |
||
(3) |
使用 (Digest-MD5) |
認証情報 |
>= LDAPv3 |
||
(4) |
使用 |
使用 (Digest-MD5) |
通信全体 |
>= LDAPv3 |
|
(5) |
使用 |
TLS セッション開始以降の通信 |
>= LDAPv3 |
設定例
上表の各ケースに対応した設定例です。
(1) 暗号化なし
<Environment name="fusionplace/authentication_scheme" type="java.lang.String" value="basic_authentication"/>
<Environment name="fusionplace/identity_asserter" type="java.lang.String" value="ldap"/>
<Environment name="fusionplace/identity_asserter_ldap/host" type="java.lang.String" value="directory.example.com"/>
<Environment name="fusionplace/identity_asserter_ldap/username_format" type="java.lang.String" value="uid=${USERNAME},dc=example,dc=com"/>
(2) TLS/SSL (LDAPS)
<Environment name="fusionplace/authentication_scheme" type="java.lang.String" value="basic_authentication"/>
<Environment name="fusionplace/identity_asserter" type="java.lang.String" value="ldap"/>
<Environment name="fusionplace/identity_asserter_ldap/host" type="java.lang.String" value="directory.example.com"/>
<Environment name="fusionplace/identity_asserter_ldap/ssl" type="java.lang.Boolean" value="true"/>
<Environment name="fusionplace/identity_asserter_ldap/username_format" type="java.lang.String" value="uid=${USERNAME},dc=example,dc=com"/>
(3) SASL + Digest-MD5
<Environment name="fusionplace/authentication_scheme" type="java.lang.String" value="basic_authentication"/>
<Environment name="fusionplace/identity_asserter" type="java.lang.String" value="ldap"/>
<Environment name="fusionplace/identity_asserter_ldap/host" type="java.lang.String" value="directory.example.com"/>
<Environment name="fusionplace/identity_asserter_ldap/username_format" type="java.lang.String" value="${USERNAME}"/>
<Environment name="fusionplace/identity_asserter_ldap_sasl" type="java.lang.Boolean" value="true"/>
(4) SASL + Digest-MD5 + TLS/SSL (LDAPS)
<Environment name="fusionplace/authentication_scheme" type="java.lang.String" value="basic_authentication"/>
<Environment name="fusionplace/identity_asserter" type="java.lang.String" value="ldap"/>
<Environment name="fusionplace/identity_asserter_ldap/host" type="java.lang.String" value="directory.example.com"/>
<Environment name="fusionplace/identity_asserter_ldap/ssl" type="java.lang.Boolean" value="true"/>
<Environment name="fusionplace/identity_asserter_ldap/username_format" type="java.lang.String" value="${USERNAME}"/>
<Environment name="fusionplace/identity_asserter_ldap_sasl" type="java.lang.Boolean" value="true"/>
(5) STARTTLS
<Environment name="fusionplace/authentication_scheme" type="java.lang.String" value="basic_authentication"/>
<Environment name="fusionplace/identity_asserter" type="java.lang.String" value="ldap"/>
<Environment name="fusionplace/identity_asserter_ldap/host" type="java.lang.String" value="directory.example.com"/>
<Environment name="fusionplace/identity_asserter_ldap/username_format" type="java.lang.String" value="uid=${USERNAME},dc=example,dc=com"/>
<Environment name="fusionplace/identity_asserter_ldap/starttls" type="java.lang.Boolean" value="true"/>
use_ldapの設定例 (fusion_place >= 14.0)
v14.0以降は、fusionplace/use_ldap
が追加されました。この設定を利用することで、fusionplace/authentication_scheme
と fusionplace/identity_asserter
の設定を省略することができます。旧来の設定も引き続き利用可能ですが、新しい設定を利用することをお勧めします。
<Environment name="fusionplace/authentication_scheme" type="java.lang.String" value="basic_authentication"/>
<Environment name="fusionplace/identity_asserter" type="java.lang.String" value="ldap"/>
↓
<Environment name="fusionplace/use_ldap" type="java.lang.Boolean" value="true"/>
digest_md5
) のみです。その他の SASL 機構や GSSAPI (Kerberos v5), その他の機構は現在のところサポートしておりません。