SSO entre Share et Alfresco

Laurent Meunier novembre 27th, 2008

Si vous avez déjà installé Alfresco 3.0, vous vous êtes sûrement rendu compte que les deux applications Share et Alfresco gèrent leur authentification indépendamment l’une de l’autre. Si vous passez de Share à Alfresco (et inversement), vous devez de nouveau montrer patte blanche en donnant votre nom d’utilisateur et votre mot de passe … ce qui est particulièrement frustrant pour nos utilisateurs.

Que faire ? Mettre en place un système de SSO et CAS répond très bien à ce problème.

Principes d’authentification de Share et de CAS

Je ne vais pas revenir sur l’installation et la configuration d’un serveur CAS. Ceci n’est pas l’objet de ce billet. Nous verrons uniquement comment CASifier Share (ce qui va déjà nous occuper un petit moment).

Je vais revenir rapidement sur le principe d’authentification de Share pour bien exposer le problème :

  • l’utilisateur ouvre l’application Share
  • Share affiche la page de login
  • l’utilisateur envoie le couple login / mot de passe
  • ce couple est envoyé vers un webscript Alfresco par Share
  • si Alfresco valide le couple, il renvoie un ticket
  • Share utilisera ce ticket pour toutes les futures communications avec Alfresco

Ceci montre que le mot de passe donné sur la page de login de Share est ensuite envoyé à Alfresco. C’est la réponse d’Alfresco qui conditionne l’accès (ou non) à l’application Share.

Une application CASifiée utilise le principe suivant pour authentifier un utilisateur :

  • connexion de l’utilisateur à l’application (il n’a pas encore de ticket CAS valide)
  • l’application le renvoie vers la page de login de CAS
  • l’utilisateur envoie le couple login / mot de passe à CAS
  • ce couple est validé par le backend de CAS
  • si le couple est valide, CAS redirige l’utilisateur vers l’application accompagné d’un ticket ST (Service cket)
  • l’application valide le ticket ST auprès de CAS et récupère le login de l’utilisateur
  • l’application authentifie l’utilisateur uniquement sur le login

De ces deux procédures d’authentification, on peut déjà faire ressortir le principale problème : l’application CASifiée ne voit jamais le mot de passe de l’utilisateur. Dans ce cas comment Share peut-il envoyer le couple login / mot de passe à Alfresco ?

Quelles sont les solutions ?

Une première piste serait d’utiliser notre ticket ST dans Share et l’envoyer à la place du mot de passer à Alfresco. Il faudrait réaliser des modifications côté Alfresco pour valider ce ticket ST auprès du serveur CAS. Cependant, cela ne peut fonctionner car un ticket ST est à usage unique. Il est invalidé côté CAS après la validation de Share, il ne peut donc plus être utilisé par Alfresco.

La seconde piste (qui sera la bonne) est l’utilisation d’un Proxy Ticket (PT). Le système de proxy a été introduit dans CAS 2, il faudra donc utiliser un serveur et un client supportant cette architecture.
Si on reprend la procédure d’authentification de CAS avec l’utilisation d’un PT, cela devient :

  • connexion de l’utilisateur à Share (il n’a pas encore de ticket CAS valide)
  • Share le renvoie vers la page de login de CAS
  • l’utilisateur envoie le couple login / mot de passe à CAS
  • ce couple est validé par le backend de CAS
  • si le couple est valide, CAS redirige l’utilisateur vers Share accompagné d’un ticket ST (Service Ticket)
  • Share valide le ticket ST auprès de CAS et demande un PGT (Proxy Granting Ticket)
  • CAS renvoie le login de l’utilisateur et un PGT
  • Share demande un PT (Proxy Ticket) à CAS à l’aide du PGT
  • CAS renvoie le PT
  • Share envoie le PT à Alfresco via un webscript
  • Alfresco valide le PT via CAS et récupère le login
  • Alfresco crée un ticket (un ticket Alfresco, pas un ticket CAS) et le renvoie à Share pour les futures échanges

Ouf ! C’est un peu long, mais ça fonctionne et c’est totalement transparent pour les utilisateurs.
Bon, on a un principe qui est fonctionnel, il ne nous reste plus qu’à passer au plus intéressant : la réalisation.

En pratique…

En pratique, il faut modifier Share et Alfreso. Des modifications des deux côtés sont nécessaires pour mettre en place le SSO. Les modifications se résument à quelques fichiers Java et beaucoup de XML.

Côté Share

  • web.xml : ajouter les filtres pour CAS
  • webscript-framework-config.xml : modification de classe d’authentification (envoie du PT à la place du mot de passe sur un nouveau webscript)
  • ajouter le jar du client CAS
  • ajouter deux nouvelles classes Java :
    • CasAuthenticationFilter : valide le ST, récupère le PT et authentifie l’utisateur dans Share
    • CasAlfrescoAuthenticator : envoie le PT vers un webscript Alfresco et récupère un ticket Alfresco

Côté Alfresco

  • web.xml : ajouter les filtres pour CAS
  • ajouter le jar du client CAS
  • ajouter le webscript recevant le PT de Share
  • ajouter la classe Java pour l’authentification CAS classique

Le code

Ces deux archives contiennent tout le code et les modifications nécessaires pour mettre en place un SSO basé sur CAS entre Share et Alfresco. Avant d’utiliser ces fichiers, il faut les modifier pour correspondre à votre installation (notamment les adresses des serveurs CAS et Alfresco).

20 Réponses to “SSO entre Share et Alfresco”

  1. Pauloon 10 fév 2009 at 3:10

    Hi
    Thanks for posting this!
    I’m trying your solution on Alfresco version 3c

    I’m sorry for not writing in french ( I don’t have the skill)

    I noticed that you are not building an AMP file for the share-cas. Your build.xml only creates jar file. Do I need an amp file?, I mean how is that the web.xml and the webscript-framework-config.xml will be applied to share without an amp?

    Also, which version of Alfresco your solution was tested with?

    Thanks A lot,

    Paulo A.

  2. Laurent Meunieron 20 fév 2009 at 10:12

    Hi Paulo,

    Unfortunately, there is no AMP-like system for Alfresco Share (please see: http://forums.alfresco.com/en/viewtopic.php?f=48&t=15371). You have to copy or modify files by hand directly on your installation.

    This solution was tested with Alfresco Enterprise 3.0.1.

    Best Regards,
    Laurent

  3. Sylvainon 24 fév 2009 at 11:27

    Bonjour,

    Merci pour ce système (et l’explication du protocole de proxy CAS).

    J’ai cependant un problème avec, je me retrouve avec des problèmes d’encodage de caractères. Si dans Alfresco je tape « éàù », le formulaire étant encodé en utf-8, les caractères accentués sont encodés sur deux octets (j’ai donc 6 octets au total).

    Une fois arrivé dans Alfresco, je me retrouve avec 6 caractères (« Ã©Ã ù »)… Nos caractères sont récupérés comme s’il s’agissait d’iso-8859-1.

    Retirer le SSO CAS revient bien à la normale, de même que mettre les filtres CAS (auth + validation) mais remettre le filtre d’auth alfresco de base (= ne pas récupérer le login de l’utilisateur depuis cas, mais le forcer à ressaisir son login/password dans Alfresco).

    Problème vu sur Alfresco 3 Stable et sur l’entreprise 3.0.1.

    Est-ce que vous avez eu le même genre de soucis ? Si oui, est-ce que vous avez pu le résoudre ? (Je n’ai rien trouvé sur les mailing lists de CAS, à part quelqu’un qui a eu le même problème, sans réponse)

    Merci beaucoup pour vos réponses !

  4. Laurent Meunieron 24 fév 2009 at 16:58

    Bonjour Sylvain,

    Je n’ai jamais rencontré de problème d’encodage provoqué par l’utilisation de CAS. Ce qui me semble bizarre c’est que ton problème apparaisse uniquement lors de l’activation des filtres CAS. J’avoue ne pas voir de lien entre les deux et du coup je n’ai pas de réponse à te donner…

    Beaucoup de paramètres entrent en jeu… Est-ce que tu attaques directement Tomcat ou est-ce que tu passes par Apache (mod_proxy ou mod_jk) ? Environnement Linux ou Windows ? Quelle locale est utilisée ? Etc.

    Bref, ce n’est pas si simple. Je te conseille d’ouvrir un nouveau sujet sur le forum francophone alfresco (http://forums.alfresco.com/fr/), tu y trouveras des personnes compétentes qui pourront certainement répondre à ton problème.

  5. Olivier ROCH VILATOon 28 fév 2009 at 5:05

    Bonjour,

    j’ai un problème lorsque j’essaie cette configuration :
    la connection sur share redirige bien vers le serveur cas
    mais apres l’authentification je suis redirigé vers la page d’erreur suivante :
    ERROR HTTP/500
    javax.servlet.ServletException: org.jasig.cas.client.validation.TicketValidationException:
    le ticket ‘ST-7-qWosEmHtaghenRsf7BCv-cas’ ne correspond pas au service demandé

    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:155)

    cause mère

    org.jasig.cas.client.validation.TicketValidationException:
    le ticket ‘ST-7-qWosEmHtaghenRsf7BCv-cas’ ne correspond pas au service demandé

    org.jasig.cas.client.validation.Cas20ServiceTicketValidator.parseResponseFromServer(Cas20ServiceTicketValidator.java:73)
    org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:188)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:132)

    de plus l’adresse de retour et de type http://alfresco.sample.org/share/share/?ticket=ST-7-qWosEmHtaghenRsf7BCv-cas

    Une idée du problème ?

  6. Hongbo HEon 13 mai 2009 at 0:02

    Thanks for the code.

    It works great with Alfresco Explorer. But I do have the following error on Alfresco Share:

    HTTP Status 500 -

    type Exception report

    message

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

    exception

    org.alfresco.error.AlfrescoRuntimeException: Unable to retrieve object: slingshot.site.configuration of type: configuration
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:140)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getConfiguration(Model.java:141)
    org.alfresco.web.site.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.alfresco.web.site.AbstractPageMapper.postExecute(AbstractPageMapper.java:90)
    org.alfresco.web.site.AbstractPageMapper.execute(AbstractPageMapper.java:65)
    org.alfresco.web.site.DefaultRequestContextFactory.newInstance(DefaultRequestContextFactory.java:109)
    org.alfresco.web.site.FrameworkHelper.initRequestContext(FrameworkHelper.java:188)
    org.alfresco.web.site.RequestUtil.getRequestContext(RequestUtil.java:76)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

    root cause

    org.alfresco.web.framework.exception.ModelObjectPersisterException: Error loading object id: slingshot.site.configuration from persister id: RemoteStore_alfresco/site-data/configurations_configuration
    org.alfresco.web.framework.MultiModelObjectPersister.getObject(MultiModelObjectPersister.java:110)
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:136)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getConfiguration(Model.java:141)
    org.alfresco.web.site.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.alfresco.web.site.AbstractPageMapper.postExecute(AbstractPageMapper.java:90)
    org.alfresco.web.site.AbstractPageMapper.execute(AbstractPageMapper.java:65)
    org.alfresco.web.site.DefaultRequestContextFactory.newInstance(DefaultRequestContextFactory.java:109)
    org.alfresco.web.site.FrameworkHelper.initRequestContext(FrameworkHelper.java:188)
    org.alfresco.web.site.RequestUtil.getRequestContext(RequestUtil.java:76)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

    root cause

    org.alfresco.web.framework.exception.ModelObjectPersisterException: Failure to load model object for path: slingshot.site.configuration.xml
    org.alfresco.web.framework.StoreModelObjectPersister.getObjectByPath(StoreModelObjectPersister.java:170)
    org.alfresco.web.framework.StoreModelObjectPersister.getObject(StoreModelObjectPersister.java:108)
    org.alfresco.web.framework.MultiModelObjectPersister.getObject(MultiModelObjectPersister.java:106)
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:136)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getConfiguration(Model.java:141)
    org.alfresco.web.site.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.alfresco.web.site.AbstractPageMapper.postExecute(AbstractPageMapper.java:90)
    org.alfresco.web.site.AbstractPageMapper.execute(AbstractPageMapper.java:65)
    org.alfresco.web.site.DefaultRequestContextFactory.newInstance(DefaultRequestContextFactory.java:109)
    org.alfresco.web.site.FrameworkHelper.initRequestContext(FrameworkHelper.java:188)
    org.alfresco.web.site.RequestUtil.getRequestContext(RequestUtil.java:76)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

    root cause

    java.lang.NullPointerException
    org.alfresco.util.URLEncoder.encode(URLEncoder.java:106)
    org.alfresco.util.URLEncoder.encode(URLEncoder.java:178)
    com.atolcd.alfresco.CasAlfrescoAuthenticator.authenticate(Unknown Source)
    org.alfresco.connector.AuthenticatingConnector.handshake(AuthenticatingConnector.java:384)
    org.alfresco.connector.AuthenticatingConnector.call(AuthenticatingConnector.java:115)
    org.alfresco.web.scripts.RemoteStore.callGet(RemoteStore.java:694)
    org.alfresco.web.scripts.RemoteStore.hasDocument(RemoteStore.java:344)
    org.alfresco.web.framework.StoreModelObjectPersister.getObjectByPath(StoreModelObjectPersister.java:136)
    org.alfresco.web.framework.StoreModelObjectPersister.getObject(StoreModelObjectPersister.java:108)
    org.alfresco.web.framework.MultiModelObjectPersister.getObject(MultiModelObjectPersister.java:106)
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:136)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getConfiguration(Model.java:141)
    org.alfresco.web.site.AbstractRequestContext.getSiteConfiguration(AbstractRequestContext.java:138)
    org.alfresco.web.site.AbstractPageMapper.postExecute(AbstractPageMapper.java:90)
    org.alfresco.web.site.AbstractPageMapper.execute(AbstractPageMapper.java:65)
    org.alfresco.web.site.DefaultRequestContextFactory.newInstance(DefaultRequestContextFactory.java:109)
    org.alfresco.web.site.FrameworkHelper.initRequestContext(FrameworkHelper.java:188)
    org.alfresco.web.site.RequestUtil.getRequestContext(RequestUtil.java:76)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

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

    Any clues will be greatly appreciated.

    Thanks,

    Hongbo

  7. Alexison 25 mai 2009 at 16:17

    Bonjour,
    Je suis en train d’essayer de CASifier Alfresco Share, néanmoins je rencontre un problème en suivant votre démarche. En effet, je n’arrive pas à ajouter les classes CasAuthenticationFilter et CasAlfrescoAuthenticator à Alfresco Share. Lorsque je lance la commande ant pour créer le jar avec les classes compilées, le paramètre -Dsdk.dir est requis, mais je ne sais pas sur quel répertoire pointer. Pourriez-vous m’éclairer sur ce point?

    Merci par avance.

  8. Alainon 25 mai 2009 at 16:52

    Bonjour

    j’ai intégré cette solution exactement comme vous l’avez précisé, sauf j’ai rencontré une exception à pour gueule :

    GRAVE: « Servlet.service() » pour la servlet Faces Servlet a g�n�r� une exception
    java.lang.NullPointerException
    at com.atolcd.alfresco.CasAuthenticationFilter.doFilter(CasAuthenticationFilter.java:115)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChai

    merci d’avance pour votre aide
    Alain

  9. Nicolas Quenanton 25 juin 2009 at 20:14

    Merci pour ce post, qui semble très bien marcher.
    Nous ne pouvons malheureusement le valider jusqu’au bout, puisque nous restons bloqué sur de la configuration purement cas…

    Auriez vous un exemple de configuration spring et web.xml pour supporter les Proxy Ticket dans cas/cas-web ?

    Merci beaucoup.

  10. Tanon 03 juil 2009 at 23:05

    I get an error when I try log into alfresco share with the above config for CAS. I am able to log into alfresco with CAS.

    The error I get when I try to log into share:

    org.alfresco.web.scripts.WebScriptException: 06030051 Wrapped Exception (with st
    atus template): 06030050 Error during processing of the template ‘Expression tic
    ket is undefined on line 2, column 11 in com/atolcd/alfresco/logincas.get.xml.ft
    l.’. Please contact your system administrator.
    at org.alfresco.web.scripts.AbstractWebScript.createStatusException(Abst
    ractWebScript.java:613)……

    Am I missing something .I changed the cas url in all the place (both xml and java files)

  11. Tanon 04 juil 2009 at 1:33

    Great stuff ,please ignore the above error message posted by me ,it was my bad ,I did not change the cas url in one of the java files .Everything work perfectly fine .

    Really great stuff .Thanks a lot for posting

    It works on alfresco 3.2 preview too :)

    We get the url encoding error bcos of improper configuration .If the CAS service url does not match you may get the url encoding error ,there are other reasons too .Make sure to edit all the java and xml files with proper cas url.

  12. Frédéric MAZZINIon 10 juil 2009 at 9:39

    Bonjour,

    Pouvez-vous dire si cette implémentation est compatible avec les versions 3.2 d’Alfresco et de Share qui viennent de sortir ? Sinon à quelle date pensez vous proposer une solution ?

    Cordialement

  13. Vanesson 16 juil 2009 at 20:26

    Bonjour Laurent,

    Je ne suis pas sure de la procedure a suivre pour la modification de web.xml (celui d’Alfresco, pas de Share). Faut-il remplacer les filtres/mappings actuels par les votres, ou faut-il ajouter? (et dans ce cas, avant ou apres?)

    Merci.

  14. Vanesson 17 juil 2009 at 22:02

    Merci pour votre contribution a Alfresco!

    J’ai une erreur 500, et me voila a nouveau bloque. Cela survient lorsque j’essaye de me connecter a Share. Je suis bien transfere sur le CAS, je m’authentifie, et je suis ensuite redirige sur Share. Et l’erreur 500 survient. Pourtant le CAS marche avec Alfresco.

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

    exception

    org.alfresco.error.AlfrescoRuntimeException: 06170001 Unable to retrieve object: default of type: theme
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:140)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getTheme(Model.java:225)
    org.alfresco.web.site.servlet.DispatcherServlet.dispatch(DispatcherServlet.java:285)
    org.alfresco.web.site.servlet.DispatcherServlet.service(DispatcherServlet.java:165)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

    root cause

    org.alfresco.web.framework.exception.ModelObjectPersisterException: Error loading object id: default from persister id: RemoteStore_alfresco/site-data/themes_theme
    org.alfresco.web.framework.MultiModelObjectPersister.getObject(MultiModelObjectPersister.java:110)
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:136)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getTheme(Model.java:225)
    org.alfresco.web.site.servlet.DispatcherServlet.dispatch(DispatcherServlet.java:285)
    org.alfresco.web.site.servlet.DispatcherServlet.service(DispatcherServlet.java:165)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

    root cause

    org.alfresco.web.framework.exception.ModelObjectPersisterException: Failure to load model object for path: default.xml
    org.alfresco.web.framework.StoreModelObjectPersister.getObjectByPath(StoreModelObjectPersister.java:170)
    org.alfresco.web.framework.StoreModelObjectPersister.getObject(StoreModelObjectPersister.java:108)
    org.alfresco.web.framework.MultiModelObjectPersister.getObject(MultiModelObjectPersister.java:106)
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:136)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getTheme(Model.java:225)
    org.alfresco.web.site.servlet.DispatcherServlet.dispatch(DispatcherServlet.java:285)
    org.alfresco.web.site.servlet.DispatcherServlet.service(DispatcherServlet.java:165)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

    root cause

    java.lang.NullPointerException
    org.alfresco.util.URLEncoder.encode(URLEncoder.java:106)
    org.alfresco.util.URLEncoder.encode(URLEncoder.java:178)
    com.atolcd.alfresco.CasAlfrescoAuthenticator.authenticate(Unknown Source)
    org.alfresco.connector.AuthenticatingConnector.handshake(AuthenticatingConnector.java:407)
    org.alfresco.connector.AuthenticatingConnector.handshakeOrGuest(AuthenticatingConnector.java:308)
    org.alfresco.connector.AuthenticatingConnector.call(AuthenticatingConnector.java:117)
    org.alfresco.web.scripts.RemoteStore.callGet(RemoteStore.java:694)
    org.alfresco.web.scripts.RemoteStore.hasDocument(RemoteStore.java:344)
    org.alfresco.web.framework.StoreModelObjectPersister.getObjectByPath(StoreModelObjectPersister.java:136)
    org.alfresco.web.framework.StoreModelObjectPersister.getObject(StoreModelObjectPersister.java:108)
    org.alfresco.web.framework.MultiModelObjectPersister.getObject(MultiModelObjectPersister.java:106)
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:136)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getTheme(Model.java:225)
    org.alfresco.web.site.servlet.DispatcherServlet.dispatch(DispatcherServlet.java:285)
    org.alfresco.web.site.servlet.DispatcherServlet.service(DispatcherServlet.java:165)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)
    [/code]

    Merci de votre aide.

  15. sharmilaon 07 sept 2009 at 11:04

    Hi,

    I am trying to integrate cas with alfresco share. I have followed the steps which you have mentioned in this doc.

    But we are facing the below error.

    rg.alfresco.error.AlfrescoRuntimeException: Unable to retrieve object: default of type: theme
    org.alfresco.web.framework.ModelObjectManager.getObject(ModelObjectManager.java:140)
    org.alfresco.web.site.Model.getObject(Model.java:513)
    org.alfresco.web.site.Model.getTheme(Model.java:225)
    org.alfresco.web.site.servlet.DispatcherServlet.dispatch(DispatcherServlet.java:246)
    org.alfresco.web.site.servlet.DispatcherServlet.service(DispatcherServlet.java:153)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    com.atolcd.alfresco.CasAuthenticationFilter.doFilter(Unknown Source)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:111)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)

    Can anyone help me in above.

    Thanks in advance,
    Sharmila

  16. Jeffon 14 sept 2009 at 21:22

    I hit the same problem. Anyone expert can help ?

  17. Jeffon 28 sept 2009 at 16:46

    Finally, I found the solution. The hostname must be same.

  18. cybertoaston 27 oct 2009 at 17:36

    Laurent, this is very helpful, but I have some questions (since I could not quite make this work yet):

    How does the proxyCallbackUrl and proxyReceptorUrl work? In your web.xml for Share, you set the proxyCallbackUrl to share/proxyCallback, but this is not a service that Alfresco defines by default. So is there something else to be configured to allow the callback to be handled by Alfresco?

    The problem I’m having is that the proxy-ticket-iou is generated, but this is never translated to a proxy-ticket (so I keep getting No Proxy Ticket Found for PGTIOU-…). I believe this is because the proxy connection between CAS and Alfresco is somehow not working (presumably this is the proxyCallbackUrl and proxyReceptorUrl setting).

    Thanks

  19. Janon 14 déc 2009 at 11:28

    Hello Lawrence,
    Sorry for not posting in french language. Unfortunatelly I do not know this language well enough.
    First of all thanks for your contribution!
    I can successfull compile alfresco-cas agains 3.2r2 SDK, but share-cas does not compile.
    It faults with serveral errors for the imports of Classes from org.alfresco.web.site.*:
    [javac] C:\java\alfresco_3.2r2_cas\share-cas\src\java\com\atolcd\alfresco\CasAuthenticationFilter.java:43: package org.alfresco.web.site does not exist

    Did you ever compile your share-cas package against that version of Alfresco-SDK?
    Can you provide assitance for this problem?

    thanks in advance,
    Jan

  20. Bertrand Foreston 04 jan 2010 at 9:44

    Have you try to add : alfresco-web-framework-3.2r2.jar (you can find it into Share lib directory ) into /lib/server/ directory of your 3.2r2 SDK ?

Trackback URI | Comments RSS

Laissez une réponse