シングルサインオン利用のための設定

fusion_place でシングルサインオンを有効にするには、fusion_place サーバが動作する Tomcat の設定ファイルにエントリを追加します。設定に際して以下の項目を確認・検討する必要があります。

  • LDAP サーバのホスト名・ポート番号

  • LDAP サーバへの接続に TLS/SSL, SASL (Simple Authentication and Security Layer)[1]、 STARTTLS といったセキュリティ機構を使用するかどうか

  • LDAP サーバへのバインドで使用するユーザの識別名 (Distinguished Name: DN) の形式

設定方法

Tomcat の設定ファイル server.xml を、シングルサインオンに対応するよう修正してください。server.xml の所在はインストール時指定情報の記録場所をご参照ください。

server.xml の内容は XML 形式の文書となっていますが、その中の Context 要素(ひとつしかありません)の配下に、いくつかの Environment 要素(JNDI 環境プロパティ)を付け加えることで、シングルサインオン機能を利用できるようになります。以下に記述例を挙げます。

<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"/>
  <!-- ... -->

  <!-- ここより、シングルサインオン機能のための記述項目 -->
  <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"/>
  <!-- ここまで、シングルサインオン機能のための記述項目
 -->
  <!-- ... -->
</Context>

設定項目一覧

シングルサインオンのための設定項目(すなわち、server.xml 中に指定する Environment 要素)は以下の通りです。

name (JNDI 環境プロパティ名) type (JNDI 環境プロパティの型) 設定すべき値の意味 value (設定可能な値) 設定値の例

fusionplace/authentication_scheme
(シングルサインオン利用時必須)

java.lang.String

fusion_place クライアントと fusion_place サーバの間の通信に適用される HTTP 認証方式。

シングルサインオン利用時には、「Basic 認証」とする必要がある。

basic_authentication

Basic 認証

digest_authentication

Digest 認証

デフォルト: digest_authentication

basic_authentication

fusionplace/identity_asserter
(シングルサインオン利用時必須)

java.lang.String

fusion_place サーバが、バックエンドでの認証に適用する認証方式。

シングルサインオン利用時には、「LDAP 認証」とする必要がある。

ldap

LDAP 認証

LDAP 認証以外の場合、当項目は省略。その場合、バックエンドでの認証方式は HTTP 認証方式と同じとなる。

ldap

fusionplace/identity_asserter_ldap/host
(シングルサインオン利用時必須)

java.lang.String

認証依頼先とする LDAP サーバのホスト名または IP アドレス。

ホスト名または IP アドレスとして適切な文字列。

directory.example.com

fusionplace/identity_asserter_ldap/port
(デフォルトポート以外利用時は必須)

java.lang.Integer

LDAP サーバのポート番号。

ポート番号として適切な整数。

デフォルト: 389 または 636 (SSL 有効時)

8389

fusionplace/identity_asserter_ldap/ssl

java.lang.Boolean

LDAP over TLS/SSL (LDAPS) の使用有無を指定。

TLS/SSL または STARTTLS を使用する場合、fusion_place サーバが動作する Java 実行環境のキーストアに、LDAP サーバの証明書を発行した CA の証明書を追加する必要があります。

true

使用する

false

使用しない

デフォルト: false

true

fusionplace/identity_asserter_ldap/username_format
(シングルサインオン利用時必須)

java.lang.String

LDAP バインドで使用するユーザ名のフォーマット。

フォーマット文字列中、fusion_place ユーザアカウント名部分を ${USERNAME} にて指定してください。実行時にユーザアカウント名で置換されます。

文字列

uid=${USERNAME},dc=example,dc=com

fusionplace/authentication/system_identity_assertion_enforcement_user_account_names

java.lang.String

HTTP 認証方式に適した認証情報照合方法が強制されるユーザアカウント名(カンマ区切り)。

ここで指定されたユーザアカウントは LDAP バインドによる認証の対象外として、fusion_place に登録されたパスワードを用いて認証される。

文字列

admin,sysadmin

fusionplace/identity_asserter_ldap_sasl

java.lang.Boolean

SASL の使用/不使用を指定。

true

使用する

false

使用しない

デフォルト: false

false

fusionplace/identity_asserter_ldap/sasl/mechanism

java.lang.String

使用する SASL 機構を指定。

digest_md5

Digest-MD5 を使用

デフォルト: digest_md5

digest_md5

fusionplace/identity_asserter_ldap/starttls

java.lang.Boolean

STARTTLS の使用/不使用を指定。

true

使用する

false

使用しない

デフォルト: false

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"/>

1. 現在利用可能な SASL 機構は、Digest-MD5 (設定値: digest_md5) のみです。その他の SASL 機構や GSSAPI (Kerberos v5), その他の機構は現在のところサポートしておりません。
2. TLS/SSL または STARTTLS を使用する場合、fusion_place サーバが動作する Java 実行環境のキーストアに、LDAP サーバの証明書を発行した CA の証明書が存在する必要があります。ここで、fusion_place cloud をお使いの場合、弊社クラウドから貴社 LDAP サーバにアクセスするためには貴社の LDAP サーバが LDAPS で通信できるよう構成されている必要がありますので、外向け DNS で解決可能なパブリックホスト名のご提供、および当該ホスト名を対象とする 信頼されたルート証明機関 に紐付けられた証明書をご用意ください。
3. LDAP サーバの LDAP バージョンです。