Search the FirstSpirit Knowledge Base
Hallo,
wir haben das BasicSearch (ehem. FS-Search) und das Personalisation Modul im Einsatz.
Einige Seiten sind über das Personalisation geschützt. Bei der Indizierung läuft die SpiderEngine auf einen Fehler, wenn sie auf die geschützten Seiten zugreifen will, obwohl der Benutzer, der in den Credentials angegeben ist Berechtigungen für diese Seiten hat. Im Log des fs-search Moduls werden mehrere Exceptions ausgegeben. U.a.
[...]
ERROR 2012-02-07 11:46:53,418 (de.espirit.firstspirit.opt.personalisation.modules.login.NTLMLoginModule) [SessionId: 87DE96383C5030AA834240DEC7C262DE] SmbException occured while performing NTLM-Authentication for user [DOMAIN]\[BENUTZER]
jcifs.smb.SmbException:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at jcifs.smb.SigningDigest.<init>(SigningDigest.java:42)
[...]
INFO 2012-02-07 11:46:53,419 (de.espirit.firstspirit.opt.personalisation.modules.login.NTLMLoginModule) [SessionId: 87DE96383C5030AA834240DEC7C262DE] NTLM-Autologin was not successfull for user '[BENUTZER]'
ERROR 2012-02-07 11:46:53,419 (de.espirit.firstspirit.opt.personalisation.LoginManager) [SessionId: 87DE96383C5030AA834240DEC7C262DE] NTLM-Autologin was not successfull!
java.lang.Exception: NTLM-Autologin was not successfull!
at de.espirit.firstspirit.opt.personalisation.modules.login.NTLMLoginModule.getLoginData(NTLMLoginModule.java:430)
at de.espirit.firstspirit.opt.personalisation.LoginManager.performLogin(LoginManager.java:168)
[...]
INFO 2012-02-07 11:46:53,420 (de.espirit.firstspirit.opt.personalisation.LoginManager) [SessionId: 87DE96383C5030AA834240DEC7C262DE] Can't get login-data: Error during login (NTLM-Autologin was not successfull!)!
ERROR 2012-02-07 11:46:53,420 (de.espirit.firstspirit.opt.personalisation.LoginManager) [SessionId: 87DE96383C5030AA834240DEC7C262DE] No login-data available!
java.lang.Exception: No login-data available!
at de.espirit.firstspirit.opt.personalisation.modules.login.RequestParameterLoginModule.getLoginData(RequestParameterLoginModule.java:61)
at de.espirit.firstspirit.opt.personalisation.LoginManager.performLogin(LoginManager.java:168)
at de.espirit.firstspirit.opt.personalisation.LoginManager.performLogin(LoginManager.java:109)
[...]
INFO 2012-02-07 11:46:53,421 (de.espirit.firstspirit.opt.personalisation.LoginManager) [SessionId: 87DE96383C5030AA834240DEC7C262DE] Can't get login-data: Error during login (No login-data available!)!
ERROR 2012-02-07 11:46:53,422 (de.espirit.firstspirit.opt.personalisation.modules.login.NTLMLoginModule) [SessionId: 87DE96383C5030AA834240DEC7C262DE] SmbException occured while performing NTLM-Authentication for user [DOMAIN]\[BENUTZER]
jcifs.smb.SmbException:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at jcifs.smb.SigningDigest.<init>(SigningDigest.java:42)
[...]
Habe ich die SpiderEngine falsch konfiguriert?
Die fs-search.xml sieht wie folgt aus:
<service class="de.espirit.firstspirit.opt.search.service.adapter.ServerService">
<server class="de.espirit.firstspirit.opt.search.server.SimpleServer">
<engine name="fssEngine" class="de.espirit.firstspirit.opt.search.engine.proxy.SecurityEngineProxy">
<engine class="de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine">
<attribute name="urls" type="list">
<!-- StartURL der Suche -->
<attribute>http://meinserver/index.jsp</attribute>
</attribute>
<!-- Index-Speicherort -->
<attribute name="index">/opt/fssearch/index</attribute>
<!-- Java Threads -->
<attribute name="maxThreads">2</attribute>
<attribute name="threadPriority">1</attribute>
<!-- Zur Indizierung freigegebene Ordner (Verbotene mit forbidden) -->
<attribute name="allowed" type="list">
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">http://meinserver/</attribute>
</attribute>
<!-- Indizierungsparameter -->
<attribute name="maxDocuments">10000</attribute>
<attribute name="maxTime">120m</attribute>
<attribute name="credentials" type="list">
<attribute type="map">
<attribute name="authType">ntlm</attribute>
<attribute name="authUsername">[Benutzer]</attribute>
<attribute name="authPassword">[Kennwort]</attribute>
<attribute name="authHost">[IP-Adresse des Domain-Controllers]</attribute>
<attribute name="authDomain">[Domain]</attribute>
</attribute>
</attribute>
</engine>
<attribute name="acceptUndefinedResults">true</attribute>
<attribute name="resultKey">groups</attribute>
<attribute name="propertyKey">FIRSTpersonalisation.usergroups</attribute>
<attribute name="locales" type="map">
<filter name="de" class="de.espirit.firstspirit.opt.search.filter.RegexFilter">
<attribute name="property">url</attribute>
<attribute name="pattern">(/de/)</attribute>
</filter>
<filter name="en" class="de.espirit.firstspirit.opt.search.filter.RegexFilter">
<attribute name="property">url</attribute>
<attribute name="pattern">(/en/)</attribute>
</filter>
</attribute>
</engine>
</server>
<attribute name="localName">fssServer</attribute>
<attribute name="createRMI">false</attribute>
<attribute name="bindTo">local</attribute>
</service>
Vielen Dank und Gruß,
Fernando Morales
Hallo Herr Morales,
haben Sie schon die Lösungen/Konfiguration aus diesem Posting probiert?
Viele Grüße
Jörg Stephan
Hallo Herr Stephan,
die Lösungen habe ich ausprobiert. Keine hat den gewünschten Erfolg gebracht.
Es werden alle Seiten, die keine Anmeldung benötigen vom crawler erfasst.
Auch die Seiten die eine Gruppenzuweisung im Sinne von personalisation (als meta-tag) haben, werden richtig gecrawlt. Sobald diese jedoch die authentifizierung verlangen (über <fsp:authorize/>) läuft er crawler auf oben genannte Fehlermeldung.
Werden die Credentials in der fs-search.xml nicht angegeben, dann wird im log folgende Warnung ausgegeben
[...]
INFO 2012-02-08 10:46:22,424 (org.apache.commons.httpclient.auth.AuthChallengeProcessor) ntlm authentication scheme selected
INFO 2012-02-08 10:46:22,424 (org.apache.commons.httpclient.HttpMethodDirector) No credentials available for NTLM <any realm>@meinserver
WARN 2012-02-08 10:46:22,424 (de.espirit.firstspirit.opt.search.engine.spider.indexer.WebIndexer) server error for url "http://meinserver/geschuetzte_seite.jsp": 401
[...]
Ich bin allerdings nicht sicher, ob ich in der Konfiguration alles richtig gemacht habe.
Danke und viele Grüße,
Fernando Morales
Hallo Herr Morales,
könnten Sie den Loglevel bitte einmal auf Debug stellen und dann nochmal das Log des fs-search Moduls anhängen?
Viele Grüße
Jörg Stephan
Hallo Herr Morales,
vielen Dank für das Logfile. Bei der Anmeldung über NTLM kommt es zu einer Exception die die Anmeldung verhindert. Setzen Sie NTLMV1 oder NTLMV2 ein?
Viele Grüße
Jörg Stephan
Hallo,
wir setzen NTLMv1 ein.
Freundlichen Gruß,
Fernando Morales
Die Lösung zum Problem müsste in der Dokumentation zu dem Search-Modul Kap. "5.4.2 Engine-Implementierung "Spider Engine"" stehen:
-------------------------------------------
Ab FirstSpirit Version 4.2R4 werden neue Sicherheitsmechanismen für den Zugriff auf generierte Projektinhalte eingesetzt (siehe FirstSpirit Release Notes 4.2R4). Die neuen Sicherheitseinstellungen müssen auch bei der Indizierung der Projektinhalte
durch die Spider Engine berücksichtigt werden. Dazu müssen neben der Start-URL, gültige Authentifizierungsinformationen (Login-Name und Passwort) für die zu indizierende Seite übermittelt werden. Andernfalls kann die Spider Engine die
gewünschten Inhalte nicht indizieren.
Beispiel:
Die Loginparameter werden an die URL der zu indizierende Seite gehängt
"?login=plain&login.user=techUser&login.password=techPwd".
Alle referenzierten Projektinhalte werden anschließend ausgehend von der Startseite indiziert.
Beispiel:
<attribute name="urls" type="list">
<attribute>
http://localhost:80/site1/index.html?login=plain&login.user=techUser&login.password=techPwd
</attribute>
<attribute>
http://localhost:80/site2/index.html?login=plain&login.user=techUser&login.password=techPwd
</attribute>
</attribute>
-------------------------------------------