# documentation:2.0:applications:alfresco
Keywords: documentation,2.0,applications,alfresco

# Alfresco

## Présentation

Alfresco est un logiciel ECM/BPM.

Depuis la version 4.0, il permet facilement de configurer un SSO grace au sous-système d'authentification.

Pour les versions plus anciennes, se référer à cette documentation : https://wiki.alfresco.com/wiki/SSO

## Configuration

### Alfresco

La documentation officielle se trouve ici : http://docs.alfresco.com/4.0/tasks/auth-alfrescoexternal-sso.html

Les fichiers suivants sont nécessaires dans l'installation Alfresco :

- `alfresco-global.properties` (ex: `tomcat/shared/classes/alfresco-global.properties`)
- `share-config-custom.xml` (ex: `tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml`)

The first will allow one to configure SSO for the alfresco webapp, and the other for the share webapp.

Éditer d'abord `alfresco-global.properties` et ajouter :

    ### SSO ###
    authentication.chain=external1:external
    external.authentication.enabled=true
    external.authentication.defaultAdministratorUserNames=
    external.authentication.proxyUserName=
    external.authentication.proxyHeader=Auth-User
    external.authentication.userIdPattern=

Éditer ensuite `share-config-custom.xml` et décommenter la dernière partie. Dans le "`<endpoint>`", changer la valeur de `<connector-id>` en `alfrescoHeader` et changer la valeur de `<userHeader>` en `Auth-User` :

       <config evaluator="string-compare" condition="Remote">
          <remote>
              <keystore>
                 <path>alfresco/web-extension/alfresco-system.p12</path>
                 <type>pkcs12</type>
                 <password>alfresco-system</password>
             </keystore>

             <connector>
                <id>alfrescoCookie</id>
                <name>Alfresco Connector</name>
                <description>Connects to an Alfresco instance using cookie-based authentication</description>
                <class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
             </connector>

             <connector>
                <id>alfrescoHeader</id>
                <name>Alfresco Connector</name>
                <description>Connects to an Alfresco instance using header and cookie-based authentication</description>
                <class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
                <userHeader>Auth-User</userHeader>
             </connector>

             <endpoint>
                <id>alfresco</id>
                <name>Alfresco - user access</name>
                <description>Access to Alfresco Repository WebScripts that require user authentication</description>
                <connector-id>alfrescoHeader</connector-id>
                <endpoint-url>http://localhost:8080/alfresco/wcs</endpoint-url>
                <identity>user</identity>
                <external-auth>true</external-auth>
             </endpoint>
          </remote>
       </config>

Un redémarrage de Tomcat est nécessaire pour appliquer les changements.

On peut ensuite se connecter avec un simple en-tête HTTP. Il faut restreindre l'accès à Alfresco à LL::NG.

### LL::NG

Renseigner simplement l'en-tête `Auth-User` avec l'attribut qui contient le nom de login, par exemple `$uid`.

On peut intercepter les déconnexions avec cette règle : `^/share/page/dologout ⇒ logout_app_sso`

## Autres documents

- DevCon 2012: Unlocking the Secrets of Alfresco Authentication, Mehdi Belmekki