ユーザごとに表示されるコンテンツが異なり、FORM認証が必要なWebサイト(例: redmine)のクロールを考えています。
管理者ページにおいて、LDAPに登録されている各ユーザごとにクロール設定およびWeb認証設定を行いクロールを実現したいのですが、Web認証設定時に入力しなければならないパスワードはLDAPを参照しなければ分かりません。(LDAPには暗号化されて登録されています)
公式ドキュメントでは、認証パスワードが平文でわかっている前提での記載でしたが、こちらに特定のLDAPユーザのLDAPに登録されているパスワードを指定する方法はありますでしょうか?
ご教授よろしくお願い致します。
要件が一般的なものではないと思われますが、どういう背景で、LDAPからパスワードを取得したいということなのでしょうか?FORM認証をしている時点で、パスワードはわかっていると思いますし、LDAPから取得したパスワードはハッシュ化されている気がするので、そこから利用可能なパスワードを取得できないように思います。
ご返信いただきありがとうございます。
分かりづらい図で恐縮ですが、以下が現在検討しているシステム全体像になります。FESSに限って言えば、以下記のことを実現したいです。
- LDAPに登録されているユーザの権限で閲覧可能な各アプリのWebページをクロールする(FESS管理者が管理者画面/APIで実施)。
- クロールしてインデックスを作成した後に、ユーザがポータルサイトに訪問し、検索フォームで検索した際は、1.でクロールした結果が表示されて参照できる
理想としては下図のように予めLDAPサーバと連携したKeycloakによってFESSをはじめとした全てのアプリがSSOでユーザ情報を共有できることですが、以下の条件でFESSのクロール設定を行う必要があり、そのためにはLDAPの情報をFESSに持たせたうえでクロール/Web認証設定が必要かもしれないと考えた次第です。また、ユーザの平文パスワードを直接参照および随時把握することは難しいため、LDAPのパスワードを変数や属性としてWeb認証の設定のところで取得できたりしないかなと考えました。
<条件>
・ユーザがポータルサイトに初めてログイン&検索フォームからFESSにアクセスする前に各ユーザごとのクロール情報/Web認証情報を予めセットしたい。
・ユーザ自身がクロール設定を行うのではなく、管理者が行う
まだまだ検討段階で大変恐縮ですが、ご教授いただけますと幸いです。
一般的に復号可能な形でパスワードが保持されていないと思うので、現実的な構成ではないように思います。この手のシステムを商用サポートで作る際には、対象のシステムが保持するグループなどのアクセス情報をLDAP/認証サーバーが保持する権限情報とマッピングして、構築しています。例外的な対応する場合もありますが、SSO的な横断検索はそのパターンで対応できると思います。
ご教授いただきありがとうございます。
勉強不足で大変申し訳ございませんが、ご回答いただいた内容に関して、以下の点について改めて確認させていただけますでしょうか。
この手のシステムを商用サポートで作る際には、対象のシステムが保持するグループなどのアクセス情報をLDAP/認証サーバーが保持する権限情報とマッピングして、構築しています
①システムが保持するのアクセス情報というのは、以下の認識で合っていますでしょうか。(例をredmineに)
・redmineにSSOした際のユーザのロールやアクセス権(/XXX配下が閲覧可能等)
②システムが保持するアクセス情報とKeycloakの権限情報を結び付けたとしても、結局はFESSのadminで各ユーザのWebクロール設定をする際には、各ユーザのWeb認証情報を設定する必要があり、その中では復号されたパスワードを入力しなければならないため、管理者が各ユーザごとに認証のあるWebページのクロールの設定を行うことは難しいと受け取りましたが、認識合っていますでしょうか。
それとも、各ユーザがKeycloakによるSSOができる状態なのであれば、各アプリケーションのアクセス情報をKeycloak側の情報とマッピングすることによって各ユーザごとのWebページクロール設定(認証設定も含む)が実現可能なのでしょうか。実現可能だとしても、それは基本的に商用サポートが必要となるでしょうか。
数多くの商用案件でも適用してきたので、やり方はいろいろとあるとは思いますが、オープンソースとしては、検索要件をもとに適切に設計して利用してください、みたいな感じになると思います。SSO環境だと、ユーザー情報とクロール対象システムの認証情報が合わない場合もあるので、カスタマイズして、インデクシング時に一致するようにしたりはします。細かい権限調整をしたい場合は、ウェブクロールなどでは難しい場合もあるので、その場合は、DBなどのデータソースを直接クロールすることを考えたりもします。なので、LDAPからユーザー情報を復号化して、それを利用してウェブクロールするは現実的ではない印象があります。