cancel
Showing results for 
Search instead for 
Did you mean: 

Pour une authentification sécurisée à Alfresco via https.

tebbaa
Champ in-the-making
Champ in-the-making
Bonjour,
J'ai fait un tour sur le forum pour avoir une idée sur la réponse à ma question et j'ai trouvé des choses. hé oui.

Solution1:  Activation de https au niveau de Tomcat   
               (URLs:    http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
                             http://java4it.blogspot.com/2007/01/how-to-configurer-tomcat-avec-https.html
                )

Solution2: Utilisation de DIGEST-MD5, cependant il faut qu'Active Directory soit configuré pour être capable de décrypter les informations, ce qui n'est pas l'option par défaut.

Est ce que quelqu'un a pu mettre en oeuvre une de ces 2 solutions?

Merci a vous.
10 REPLIES 10

rivarola
Champ on-the-rise
Champ on-the-rise
Oui, la première. Ca marche.
Sinon il y a aussi une troisième solution avec un frontal Apache utilisant mod_ssl, mod_jk et mod_rewrite en frontal.

shouill
Champ in-the-making
Champ in-the-making
Bonjour,

l'accès https configurer dans tomcat fonctionne très bien mais j'ai également l'accès via http qui est toujours ouvert.

Comment puis-je interdire l'accès via http ?

Merci.

Voici ma config tomcat :


<Connector port="8090" protocol="HTTP/1.1" URIEncoding="UTF-8"
               connectionTimeout="20000"
               redirectPort="9090" />
  
<Connector port="9090" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />

Merci.

rivarola
Champ on-the-rise
Champ on-the-rise
Normalement, en commentant le connecteur sur le port 8090.

shouill
Champ in-the-making
Champ in-the-making
Si je fais ça, ça fonctionne très bien pour Explorer mais j'ai de nouveau une erreur 500 pour Share, même en modifiant le fichier share-config-custom.xml pour pointer vers les adresses https.

rguinot
Confirmed Champ
Confirmed Champ
Plusieurs choses :

vous pouvez forcer la redirection du connecteur 8080 sur le 8443, pour un pattern d'URL donné, ou pour toute l'application. cela se fait en définissant une security-constraint,dans web.xml, exemple :


<security-constraint>
   <web-resource-collection>
       <web-resource-name>Entire Application</web-resource-name>
       <url-pattern>/*</url-pattern>
   </web-resource-collection>
   <user-data-constraint>
       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
   </user-data-constraint>
    </security-constraint>

la config a changer pour share si le connecteur n'est pas sur localhost:8080 est située dans web-extension/webscript-framework-config-custom.xml, section "Remote"

shouill
Champ in-the-making
Champ in-the-making
Bonjour, ça ne fonctionne pas.

Pouvez-vous me donner le contenu complet de la balise remote ?

Moi j'ai ceci :

   <!– Overriding endpoints to reference a remote Alfresco server –>
   <config evaluator="string-compare" condition="Remote">
      <remote>

         <endpoint>
            <id>alfresco-noauth</id>
            <name>Alfresco - unauthenticated access</name>
            <description>Access to Alfresco Repository WebScripts that do not require authentication</description>
            <connector-id>alfresco</connector-id>
            <endpoint-url>http://localhost:8090/alfresco/s</endpoint-url>
            <identity>none</identity>
         </endpoint>

         <endpoint>
            <id>alfresco</id>
            <name>Alfresco - user access</name>
            <description>Access to Alfresco Repository WebScripts that require user authentication</description>
            <connector-id>alfresco</connector-id>
            <endpoint-url>http://localhost:8090/alfresco/s</endpoint-url>
            <identity>user</identity>
         </endpoint>

         <endpoint>
            <id>alfresco-feed</id>
            <name>Alfresco Feed</name>
            <description>Alfresco Feed - supports basic HTTP authentication</description>
            <connector-id>http</connector-id>
            <endpoint-url>http://localhost:8090/alfresco/s</endpoint-url>
            <basic-auth>true</basic-auth>
            <identity>user</identity>
         </endpoint>
      
         <security-constraint>
          <web-resource-collection>
            <web-resource-name>Entire Application</web-resource-name>
            <url-pattern>/*</url-pattern>
          </web-resource-collection>
          <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
          </user-data-constraint>
       </security-constraint>
      </remote>
   </config>

Que je mette http ou https dans les url, ça ne change rien.

rguinot
Confirmed Champ
Confirmed Champ
la security constraint est à placer dans tomcat/conf/web.xml, pas dans la config des connecteurs !

d'autres part, "ca ne fonctionne pas" n'est pas suffisant, faites un peu plus d'efforts dans la description des problèmes restants

shouill
Champ in-the-making
Champ in-the-making
Autant pour moi, je l'ai replacé dans le web.xml

J'ai donc ceci dans web.xml de Share :



  <security-constraint>
   <web-resource-collection>
       <web-resource-name>Entire Application</web-resource-name>
       <url-pattern>/*</url-pattern>
   </web-resource-collection>
   <user-data-constraint>
       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
   </user-data-constraint>
    </security-constraint>


Ensuite dans server.xml de tomcat :


    <Connector port="9090" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />

Je n'ai que ça, j'ai supprimé la partie non SSL

Et enfin dans share-config-custom.xml, c'est ce fichier qu'il faut modifier dans la 3.3g :


<!– Overriding endpoints to reference a remote Alfresco server –>
   <config evaluator="string-compare" condition="Remote">
      <remote>

         <endpoint>
            <id>alfresco-noauth</id>
            <name>Alfresco - unauthenticated access</name>
            <description>Access to Alfresco Repository WebScripts that do not require authentication</description>
            <connector-id>alfresco</connector-id>
            <endpoint-url>https://localhost:9090/alfresco/s</endpoint-url>
            <identity>none</identity>
         </endpoint>

         <endpoint>
            <id>alfresco</id>
            <name>Alfresco - user access</name>
            <description>Access to Alfresco Repository WebScripts that require user authentication</description>
            <connector-id>alfresco</connector-id>
            <endpoint-url>https://localhost:9090/alfresco/s</endpoint-url>
            <identity>user</identity>
         </endpoint>

         <endpoint>
            <id>alfresco-feed</id>
            <name>Alfresco Feed</name>
            <description>Alfresco Feed - supports basic HTTP authentication</description>
            <connector-id>https</connector-id>
            <endpoint-url>https://localhost:9090/alfresco/s</endpoint-url>
            <basic-auth>true</basic-auth>
            <identity>user</identity>
         </endpoint>
      
      </remote>
   </config>


Et donc pour finir, Alfresco Explorer fonctionne bien sur l'url https, le http n'est plus accéssible mais Share me renvoie cette erreur dès le chargement :


HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.extensions.surf.exception.PlatformRuntimeException: 06080000 Unable to retrieve object: slingshot.site.configuration of type: configuration
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.springframework.extensions.surf.exception.PlatformRuntimeException: 06080000 Unable to retrieve object: slingshot.site.configuration of type: configuration
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:130)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.springframework.extensions.surf.exception.ModelObjectPersisterException: Error loading object id: slingshot.site.configuration from persister id: webframework.slingshot.persister.remote
   org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:102)
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.springframework.extensions.surf.exception.ModelObjectPersisterException: Failure to load model object for path: alfresco/site-data/configurations/slingshot.site.configuration.xml
   org.springframework.extensions.surf.persister.PathStoreObjectPersister.getObject(PathStoreObjectPersister.java:251)
   org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:98)
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.io.IOException: Unable to test document path: alfresco/site-data/configurations/slingshot.site.configuration.xml in remote store: alfresco due to error: 500 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
   org.springframework.extensions.webscripts.RemoteStore.hasDocument(RemoteStore.java:347)
   org.springframework.extensions.surf.persister.PathStoreObjectPersister.getObject(PathStoreObjectPersister.java:216)
   org.springframework.extensions.surf.persister.MultiObjectPersister.getObject(MultiObjectPersister.java:98)
   org.springframework.extensions.surf.ObjectPersistenceService.getObject(ObjectPersistenceService.java:126)
   org.springframework.extensions.surf.ModelObjectService.getObject(ModelObjectService.java:507)
   org.springframework.extensions.surf.ModelObjectService.getConfiguration(ModelObjectService.java:135)
   org.springframework.extensions.surf.site.SiteUtil.getSiteConfiguration(SiteUtil.java:99)
   org.springframework.extensions.surf.support.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
   org.springframework.extensions.surf.mvc.ThemeInterceptor.preHandle(ThemeInterceptor.java:66)
   org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.preHandle(WebRequestHandlerInterceptorAdapter.java:54)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:761)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.

Merci.

rguinot
Confirmed Champ
Confirmed Champ
la security constraint sert à faire la redirection sélective entre 8080 et 8443, si vous commentez le connecteur, cette constraint ne sert à rien.

D'autre part,

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


d'autre part, il semble que votre certificat est invalide et/ou vous ne l'avez pas importé via keytool dans le keystore de la JVM.