AnsweredAssumed Answered

JbossPortal2.6.2+Alfresco=PB Authentification portlet

Question asked by excoffie on Dec 14, 2007
Bonjour à tous.
Je vous expose mon problème.

Logiciels:
Alfresco (Build-Jboss) depuis les sources SVN revision 1347
JbossAS 4.2.1GA
Jboss Portal 2.6.2

Dans le portail j'utilise les portlets fournies par Alfresco pour afficher des documents etc…
Mon problème est que les portlets (WebScriptPortlet) ne récupère par l'authentification du Portail.

Dans mon fichier portlet.xml j'ai :

<portlet>
        <description>ERT Weekly</description>
        <portlet-name>AlfDocListERTWeekly</portlet-name>
      <display-name>AlfDocListERTWeekly</display-name>
        <portlet-class>org.alfresco.web.scripts.portlet.WebScriptPortlet</portlet-class>
   <init-param>
           <name>authenticator</name>
           <value>webscripts.authenticator.jsr168</value>
        </init-param>      
   <init-param>
           <name>scriptUrl</name>
      <value>/alfresco/168s/ui/folderBrowser?f=0&amp;p=ERT</value>
        </init-param>
J'utilise bien le bon authenticator d'apres ce que j'ai trouvé sur le wiki:

http://wiki.alfresco.com/wiki/Web_Scripts_Framework#JSR-168_Authentication

JSR-168 Authentication
(id: webscripts.authenticator.jsr168)
This authenticator relies on the user name setup by the JSR-168 runtime. It assumes the user has already been authenticated by the Portal. The Alfresco Repository executes in the context of the Portal user.

Ma portlet est fonctionnelle quand j'ajoute &guest=true a la fin du scripturl ou quand personne n'est logué sur le portail.

si je me logue sur le portail j'obtient cette erreur :


Web Script Status 500 - Internal Error

The Web Script /alfresco/168s/ui/doclistpanelguest has responded with a status of 500 - Internal Error.

500 Description:   An error inside the HTTP server which prevented it from fulfilling the request.

Message:   A valid SecureContext was not provided in the RequestContext

Exception:   net.sf.acegisecurity.AuthenticationCredentialsNotFoundException - A valid SecureContext was not provided in the RequestContext
   
   net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:477)
   net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:355)
   net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:77)
   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:241)
   org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
   org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
   $Proxy290.authenticationExists(Unknown Source)
   org.alfresco.repo.web.scripts.portlet.JSR168PortletAuthenticatorFactory$JSR168PortletAuthenticator.authenticate(JSR168PortletAuthenticatorFactory.java:127)
   org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:222)
   org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:227)
   org.alfresco.web.scripts.portlet.WebScriptPortlet$PortletRuntime.executeScript(WebScriptPortlet.java:323)
   org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:130)
   org.alfresco.web.scripts.portlet.WebScriptPortlet.doView(WebScriptPortlet.java:218)
   org.alfresco.web.scripts.portlet.WebScriptPortlet.render(WebScriptPortlet.java:135)
   org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.invokeRender(PortletContainerImpl.java:483)
   org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.dispatch(PortletContainerImpl.java:405)

A noter que pour l'authentification dans alfresco je fais des modifs pour s'authentifier sur l'active directory (fonctionne depuis le client portlet Alfresco)

ntlm-authentication-context.xml:

    <bean id="authenticationComponent" class="org.alfresco.repo.security.authentication.ntlm.NTLMAuthenticationComponentImpl">
   [….]
   <property name="servers">
      <value>domain.com\monServeurNTLM</value>
   </property>
    </bean>

file-servers-custom.xml:

   <config evaluator="string-compare" condition="Filesystem Security" replace="true">
      <authenticator type="alfresco">
       <Server>monServeurNTLM</Server>
       <Domain>domain.com</Domain>
      </authenticator>
Les questions que je me pose :
   AuthenticationCredentialsNotFoundException
   -> cela viendrait d'un problème de droit utilisateur (pas le bon rôle, etc au niveau d'alfresco ou du portail ?)

   Apres un peu de debug,
   org.alfresco.repo.web.scripts.portlet.JSR168PortletAuthenticatorFactory$JSR168PortletAuthenticator.authenticate(JSR168PortletAuthenticatorFactory.java:127)


2007-12-14 10:25:53,855 DEBUG [org.alfresco.repo.web.scripts.portlet.JSR168PortletAuthenticatorFactory] JSR-168 Remote user: excoffie
2007-12-14 10:25:53,855 DEBUG [org.alfresco.repo.web.scripts.portlet.JSR168PortletAuthenticatorFactory] JSR-168 Remote user: excoffie
2007-12-14 10:25:53,855 DEBUG [org.alfresco.repo.web.scripts.portlet.JSR168PortletAuthenticatorFactory] Authenticating as user excoffie
2007-12-14 10:25:53,855 DEBUG [org.alfresco.repo.web.scripts.portlet.JSR168PortletAuthenticatorFactory] Authenticating as user excoffie
Donc le nom de l'utilisateur du portail est bien récupéré par l'authenticator d'alfresco. mais la suite plante.

Je suis bloqué ici

si quelqu'un a une idée, je suis preneur

Merci d'avance.

Outcomes