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

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

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

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

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

(※1)現在利用可能な SASL 機構は、Digest-MD5(設定値: digest_md5 )のみです。その他の SASL 機構や GSSAPI(Kerberos v5), その他の機構は現在のところサポートしておりません。

設定方法

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

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

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

設定項目一覧

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

name
(環境変数名)
type
(環境変数の型)
設定すべき値の意味 value
(設定可能な値)
設定値の例

fusionplace/authentication_scheme

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

java.lang.String

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

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

basic_authentication
:基本認証

digest_authentication
:ダイジェスト認証

デフォルト: 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 SSL/TLS(LDAPS)の使用/不使用を指定。

  1. SSL/TLS または 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 で利用可能なセキュリティ機構とその組み合わせは以下のとおりです。

セキュリティ機構の使用パターン セキュリティ実現内容

ケース

SSL / TLS

(LDAPS)(※1)

SASL

(SASL 機構)

STARTTLS

(※1)

暗号化の範囲

必要な LDAP バージョン

(※2)

(1)

なし

>= LDAPv2

(2)

使用

通信全体

>= LDAPv2

(3)

使用(Digest-MD5)

認証情報

>= LDAPv3

(4)

使用

使用(Digest-MD5)

通信全体

>= LDAPv3

(5)

使用

TLS セッション開始以降の通信

>= LDAPv3

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

(※2) LDAP サーバの LDAP バージョンです。

設定例

上表の各ケースに対応した設定例です。

(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)SSL/TLS(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 + SSL/TLS(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"/>