Tuigwaa ではデフォルトで、認証の為に組込みのディレクトリサービスとして ApacheDS をバンドルして 提供します。ここでは、組込みの ApacheDS を利用する際に必要な J2EE コンテナの設定と、組込み ではなく外部のディレクトリサーバを利用する場合の手順について説明します。 すぐ使い始めたい方については、以下のバンドルの 「ApacheDS を利用する場合」をご参照下さい。
バンドルで利用する際には以下の三点の作業を行います。
<Context workDir="work/Catalina/localhost/tuigwaa" path="/tuigwaa" docBase="tuigwaa"> <Realm className="org.apache.catalina.realm.JAASRealm" appName="tuigwaa" userClassNames="org.seasar.tuigwaa.security.auth.TgwUser" roleClassNames="org.seasar.tuigwaa.security.auth.TgwRole" useContextClassLoader="false"/> </Context>
この設定例はソースをダウンロードし、展開した etc/auth 以下に tomcat-tuigwaa.xmlにて提供されています。 尚、JAAS に関連する、クラス、及びファイルは以下の通りです。(WEB-INF/classes からの相対位置です)
その後、jaas を利用する為にコンテナのJVMの起動設定としてJAASの設定ファイルを指定します。 JAASの設定ファイルには以下のような設定を行い、適当な場所に保存してください。ここではその設定ファイルを ${CONF_PATH}/jaas.conf とします。(ファイル名は任意です)
tuigwaa { org.seasar.tuigwaa.security.auth.TgwLoginModule required; };
この設定例はソースをダウンロードし、展開した etc/auth 以下にjaas.confにて提供されています。 尚、上記の LoginModule は try_first_pass と use_first_pass をサポートしています。 (詳細は こちら) 他の JAAS のモジュールと組み合わせて利用する際には、その設定も行って下さい。JAAS の設定ファイルの 詳細についてはこちら をご覧下さい。 これを JVM の起動時に下記のようにシステムプロパティでその位置を指定して下さい。
-Djava.security.auth.login.config="${CONF_PATH}/jaas.conf"
尚、Tomcat では、上記の値を CATALINA_OPTS 環境変数に指定する事によって、catalina.sh (catalina.bat) にて起動を行う際にこのシステムプロパティを設定することも可能です。
ここまでの準備が整ったら、Tuigwaa にアクセスしてください。アクセスの際にユーザ名とパスワードを聞かれますので、 ユーザ名、パスワード共にtuigwaaを指定してください。 尚、このユーザはtuigwaaのシステムワイドなアドミニストレータですので、ログイン後にパスワードを変更する事を推奨 致します。その後、ご利用になりたいユーザ、ロール等を順次作成してください。
その他のJ2EEコンテナにおけるJAASの設定方法については、各コンテナの設定マニュアルをご参照下さい。 Tuigwaa バンドルの ApacheDS は、起動と同時に 10389 番 (デフォルト) にて、ディレクトリサービスを 提供します。多くのJ2EEコンテナが、LDAPによる認証をサポートしておりますが、Tuigwaaの場合、アプリケーション コンテキストがロードされるタイミングにて、このディレクトリサービスが起動しますので、コンテナ側がTuigwaaの ロードに先立って、ディレクトリサービスにアクセスするような仕組みのもの (Tomcat の JNDI Realm 等) では 起動自体に失敗する可能性がございます。そのような際にはここで提供されているJAASのLoginModuleを利用した クラスをご利用下さい。 Tomcat 以外動作は未確認ですが、以下に各コンテナのJAAS関連の設定マニュアルがございます。
J2EEコンテナ | バージョン | マニュアルURL |
---|---|---|
Tomcat | 5.0 | Realm Configuration HOW-TO |
JBoss | ? | Security & JASS/JBoss (Forum) |
Sun Java System Application Server | Enterprise Edition 8.1 2005Q2 Update2 | Additional Information for Specific Realms |
BEA WebLogic Server | 9.0 | 認証プロバイダのコンフィグレーション |
IBM WebSphere Application Server | 5.0 | インフォメーションセンター |
外部のディレクトリサーバを利用する場合、以下の二点の作業が必要となります。
まず、${tuigwaa_war_home}/WEB-INF/classes/tuigwaa.properties 内の 以下のプロパティをご利用のディレクトリサービスに適応するように変更してください。
プロパティ名 | デフォルト値 | 意味 | 変更の指針 |
---|---|---|---|
ldap.service.embeded | true | true の場合バンドルの LDAP を利用、 false の場合バンドルの LDAP を利用しません。 | false に設定して下さい。ここが true のままだと、下記の設定変更を行ってもバンドルの LDAP が利用されます。 |
ldap.admin.username | tuigwaa | Tuigwaa のデフォルトのシステムアドミニストレータのユーザ名 | ご利用の LDAP サーバに存在するユーザ名で、かつ設定者が利用可能なユーザ名を設定して下さい。 |
ldap.admin.rolename | admin | Tuigwaa のデフォルトのシステムアドミニストレータのロール名 | 上記で設定したアドミニストレータが属するグループで、かつシステムアドミニストレータロールとして利用したいグループ名を指定して下さい。 |
ldap.provider.url | ldap://localhost:10389/dc=seasar,dc=org | LDAP プロバイダの URL | ご利用のディレクトリサービスの URL を指定してください。注意点として、ここで LDAP のバインドの際にベースを指定した際には、 それと同じ値を ldap.user.search.base にも必ず指定してください。 |
ldap.security.authentication ldap.security.principal ldap.security.credentials | セキュリティ情報の為記載しません | 順にコンテキストのバインドの際の「認証方法」「認証ユーザ」「認証パスワード」 | ご利用の環境に適した値を設定してください。 |
ldap.search.base | dc=seasar,dc=org | バインドのベース | ldap.provider.url にもあるように、ここの値を変更する際には、逆に ldap.provider.url のベースネームも 同じになるように必ず変更して下さい。 |
ldap.user.search.base | ou=users | バインドするベースネームから、ユーザエントリまでの RDN | 上記の ldap.provider.url (ldap.search.base) に合わせて適切な「属性=値」を指定して下さい。 |
ldap.user.search.prefix | uid | ユーザ名を表す属性名 | 上記の ldap.provider.url (ldap.search.base) 及び、ldap.user.search.base に合わせて適切な「属性名」を指定して下さい。 ユーザは ldap.user.search.base をベースとして、「(ldap.user.search.prefix の値=*)」という検索フィルタにて検索され、 また DN は「(ldap.user.search.prefix),(ldap.user.search.base),(ldap.search.base)」となります。 |
ldap.role.search.base | ou=roles | バインドするベースネームから、ロールエントリまでの RDN | 上記の ldap.provider.url (ldap.search.base) に合わせて適切な「属性=値」を指定して下さい。 |
ldap.role.search.prefix | cn | ロール名を表す属性名 | 上記の ldap.provider.url (ldap.search.base) 及び、ldap.role.search.base に合わせて適切な「属性名」を指定して下さい。 ロールは ldap.role.search.base をベースとして、「(ldap.role.search.prefix の値=*)」という検索フィルタにて検索され、 また DN は「(ldap.role.search.prefix),(ldap.role.search.base),(ldap.search.base)」となります。 |
ldap.role.user.attribute | member | ロールに属するユーザを表す属性名 | あるロールに含まれるユーザを表す属性名。「(ldap.role.user.attribute=ユーザDN)」という条件で、 あるユーザがどのロールに含まれるかが ldap.role.search.base をベースとして検索されます。 |
ldap.role.user.prefixonly | false | ディレクトリサーバに格納されているldap.role.user.attributeの値がldap.user.search.prefixの値のみか、完全なDNかのフラグ | ldap.role.user.attribute で検索した値が完全な DN (例 : uid=tuigwaa,ou=users,dc=seasar,dc=org)であるか、 ldap.user.search.prefix の値 (例 : uid=tuigwaa の場合の tuigwaa) のみかを判別するフラグ。 |
次に上記のディレクトリサービスを利用するようにコンテナ側の設定を変更してください。 上記の JAAS もそのまま利用することも可能ですし、コンテナの LDAP 用のセキュリティ設定のご利用も可能です。 環境に適した方法を選択して下さい。 Tomcat の場合には、以下のような JNDI Realm の設定を ${CATALINA_HOME}/conf/server.xml もしくは、 ${CATALINA_HOME}/conf/Catalina/localhost/tuigwaa.xml に記述して下さい。 パラメータ等は Tuigwaa のバンドル版のディレクトリサービスの場合の例です。
<Context workDir="work/Catalina/localhost/tuigwaa" path="/tuigwaa" docBase="tuigwaa"> <Realm className="org.apache.catalina.realm.JNDIRealm" connectionURL="ldap://localhost:389/" connectionName="uid=admin,ou=system" connectionPassword="tuigwaa" userPattern="uid={0},ou=users,dc=seasar,dc=org" userRoleName="memberOf" roleBase="ou=groups,dc=seasar,dc=org" roleName="cn" roleSearch="(member={0})"/> </Context>
その他のJ2EEコンテナにおけるLDAPのセキュリティに関する設定方法については、各コンテナの設定マニュアルをご参照下さい。 Tomcat 以外動作は未確認ですが、以下に各コンテナのセキュリティ関連の設定マニュアルがございます。
J2EEコンテナ | バージョン | マニュアルURL |
---|---|---|
Tomcat | 5.0 | Realm Configuration HOW-TO |
JBoss | ? | LdapLoginModule |
Sun Java System Application Server | Enterprise Edition 8.1 2005Q2 Update2 | Additional Information for Specific Realms |
BEA WebLogic Server | 9.0 | LDAP認証プロバイダのコンフィグレーション |
IBM WebSphere Application Server | 5.0 | インフォメーションセンター |