LoginSignup
1
0

More than 5 years have passed since last update.

ManifoldCF2.4 Security SearchComponent pluginのセットアップ手順

Posted at

参考記事:http://www.rondhuit.com/apache-manifoldcf-mcf-security-searchcomponent-plugin.html
こちらはCentOS7、Solr6とManifoldCF2.4のバージョンを使用しています。

1.ManifoldCF(略:MCF)公式サイトからSolr6版のMCFセキュリティーサーチコンポーネントを入手

solr6に対応のバージョンの所在ですが、英語版Downloadページにありました(日本語ページにはなかったようです)

2.取得したapache-manifoldcf-solr-6.x-plugin-2.2-bin.tar.gzをSolrに配置

Solr5以降はコアがsolrのインストールした場所ではなくvar/solr/data/<corename>で作成されるようになったようです。
そこにlibフォルダーを作成して、上記ファイルを解凍したjarをコピーする

mkdir -p var/solr/data/<corename>/lib
cp apache-manifoldcf-solr-6.x-plugin-2.2.jar var/solr/data/<corename>/lib

3.Solr側のschema.xmlとsolrconfig.xmlを編集する
場所はvar/solr/data//conf、schema.xml名前がmanaged_schema.xmlに変わった模様

先ほど解凍したjarのフォルダーにReadme.txtがあるので、そちらを参照。

  • managed_schema.xmlにフィールド追加
managed_schema.xml
... 
 <field name="allow_token_document" type="string" indexed="true" stored="true"
    multiValued="true" required="true" default="__nosecurity__"/>
  <field name="allow_token_parent" type="string" indexed="true" stored="true"
    multiValued="true" required="true" default="__nosecurity__"/>
  <field name="allow_token_share" type="string" indexed="true" stored="true"
    multiValued="true" required="true" default="__nosecurity__"/>
  <field name="deny_token_document" type="string" indexed="true" stored="true"
    multiValued="true" required="true" default="__nosecurity__"/>
  <field name="deny_token_parent" type="string" indexed="true" stored="true"
    multiValued="true" required="true" default="__nosecurity__"/>
  <field name="deny_token_share" type="string" indexed="true" stored="true"
    multiValued="true" required="true" default="__nosecurity__"/>
...
  • solrconfig.xmlにsearchComponentとqueryParserを追加し、にフックする
solrconfig.xml
...
  <!-- ManifoldCF document security enforcement component -->
<searchComponent name="manifoldCFSecurity"
  class="org.apache.solr.mcf.ManifoldCFSearchComponent">
  <str name="AuthorityServiceBaseURL">http://localhost:8345/mcf-authority-service</str>
  <int name="ConnectionPoolSize">50</int>
</searchComponent>
...
<requestHandler name="/select" class="solr.SearchHandler">
...
  <arr name="last-components">
    <str>manifoldCFSecurity</str>
  </arr>
  ...
</requestHandler>
...
solrconfig.xml
...
<!-- ManifoldCF document security enforcement component -->
<queryParser name="manifoldCFSecurity"
  class="org.apache.solr.mcf.ManifoldCFQParserPlugin">
  <str name="AuthorityServiceBaseURL">http://localhost:8345/mcf-authority-service</str>
  <int name="ConnectionPoolSize">50</int>
</queryParser>
...
<requestHandler name="/select" class="solr.SearchHandler">
... 
 <lst name="appends">
    <str name="fq">{!manifoldCFSecurity}</str>
  </lst>
  ...
</requestHandler>
...

以上で設定完了です。反映するためSolrを再起動する必要があります。
MCFのクロールを再度実行して、セキュリティー管理用フィールドのインデックスを投入します。

検索時はAuthenticatedUserNameをパラメータとして渡す必要があります。
動作確認するには以下のクエリーを投入してみてください。
http://localhost:8983/solr/corename/select?q=*:*&AuthenticatedUserName=username@domain

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0