ユーザ用ツール

サイト用ツール


pentaho:ldap

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
pentaho:ldap [2017/06/02 19:51]
Wiki Editor
pentaho:ldap [2017/06/02 20:22] (現在)
Wiki Editor
ライン 8: ライン 8:
 ===== LDAPの接続設定 ===== ===== LDAPの接続設定 =====
 「=」記号はエスケープが必要 「=」記号はエスケープが必要
 +
 +ここではActiveDirectoryのLDAP機能を利用する。ディレクトリの構造を把握して、適宜対応する。
  
 ${prefix}/​pentaho-solutions/​system/​applicationContext-security-ldap.properties ${prefix}/​pentaho-solutions/​system/​applicationContext-security-ldap.properties
ライン 50: ライン 52:
   adminUser=sAMAccountName\=admin_user,​OU\=research,​DC\=example,​DC\=jp   adminUser=sAMAccountName\=admin_user,​OU\=research,​DC\=example,​DC\=jp
  
 +
 +
 +
 +===== データアクセスの権限設定 =====
 +マニュアルには記載されているが、特に変更しなくても動作するようだ。細かく権限設定をする際には必要かもしれない。
 +
 +レポートデザイナー等からのパブリッシュなどもテストして、支障がないか確認する。
 +
 +  * ${prefix}/​pentaho-solutions/​system/​data-access/​settings.xml
 +
 +
 +
 +===== 認証基盤の切り替え =====
 +内部の認証サービスからLDAP認証に切り替える
 +
 +${prefix}/​pentaho-solutions/​system/​securities.properties
 +  // providerをjackrabbitからldapに変更する
 +  provider=ldap
 +
 +
 +===== サブツリーを検索するようにソースを改変 =====
 +権限設定画面で表示するユーザの一覧を取得する設定「allUsernamesSearch」では検索ベースだけを検索し、サブツリーを検索しない。
 +
 +一般的には、Pentahoを利用するユーザを特定のOUに入れたりするので、サブツリーを検索しなくても問題がないかもしれないが、設定した環境では利用ユーザが複数のOUに含まれており、検索する必要があった。AD側で対応することも検討したが、同一ユーザを複数のOUに所属させることはできず、エイリアスのような機能も無いようなので、上位からサブツリーを検索して所属グループ等で絞り込みをかけるしかない。そのためには、サブツリーを検索するように設定変更をする必要がある。ログイン時のユーザ検索では、サブツリーを検索するかどうかの設定項目があるのに、ユーザ一覧の検索では設定項目がなく、しかもサブツリーを検索しないのは謎だ。。。
 +
 +以下のファイルに設定を加える。
 +
 +${prefix}/​pentaho-solutions/​system/​applicationContext-pentaho-security-ldap.xml ​
 +    <!-- be sure to escape ampersands -->
 +    <bean id="​allUsernamesSearch"​
 +          class="​org.pentaho.platform.plugin.services.security.userrole.ldap.search.GenericLdapSearch">​
 +      <​constructor-arg index="​0"​ ref="​contextSource"​ />
 +      <​constructor-arg index="​1">​
 +        <bean
 +            class="​org.pentaho.platform.plugin.services.security.userrole.ldap.search.LdapSearchParamsFactoryImpl">​
 +          <​constructor-arg index="​0"​ value="​${ldap.allUsernamesSearch.searchBase}"​ />
 +          <​constructor-arg index="​1"​ value="​${ldap.allUsernamesSearch.searchFilter}"​ />
 +  ​
 +          ////////////////////////////////////////////////////////////​
 +          // この部分を追加
 +          <​constructor-arg index="​2">​
 +            <bean class="​javax.naming.directory.SearchControls">​
 +              <!-- 2 comes from http://​java.sun.com/​javase/​6/​docs/​api/​javax/​naming/​directory/​SearchControls.html#​SUBTREE_SCOPE -->
 +              <​property name="​searchScope"​ value="​2"​ />
 +            </​bean>​
 +          </​constructor-arg>​
 +          ////////////////////////////////////////////////////////////​
 +  ​
 +        </​bean>​
 +      </​constructor-arg>​
 +      <​constructor-arg index="​2">​
 +        <bean
 +            class="​org.pentaho.platform.plugin.services.security.userrole.ldap.transform.SearchResultToAttrValueList">​
 +          <​constructor-arg index="​0"​ value="​${ldap.allUsernamesSearch.usernameAttribute}"​ />
 +        </​bean>​
 +      </​constructor-arg>​
 +    </​bean>​
 +
 +XMLの構造を慎重に確認しながら、constructor-arg要素を追加する。javaはよくわからないが、LDAPコネクションを作成する際のコンストラクタに適切なパラメータを渡すことで、検索のスコープを設定しているようだ。javaが理解できれば比較的容易に設定個所を特定できるのだろうが、かなり時間がかかった。一応、決め手のサイトは以下。
 +
 +  * [[http://​wiki.pentaho.com/​display/​ServerDoc2x/​LDAP+Troubleshooting+2.x-3.0.x?​decorator=printable]]
pentaho/ldap.txt · 最終更新: 2017/06/02 20:22 by Wiki Editor