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).
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.
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
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 !
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.
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 ?
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
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.
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
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.
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)
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.
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
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.
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.
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
I hit the same problem. Anyone expert can help ?
Finally, I found the solution. The hostname must be same.
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
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
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 ?