web script Hello world : Unauthorized

cancel
Showing results for 
Search instead for 
Did you mean: 
encorearthur
Member II

web script Hello world : Unauthorized

Bonjour,

Je suis developpeur web, mais noobie sur Alfresco.
Je dois développer une petite "couche" en javascript pour interagir avec Alfresco.
Mon serveur est sous linux, la version d'Alfresco est là 3.4.0 Community

Nous avons opté pour des appels aux webscripts; j'ai donc suivi le tutoriel du script hello world pour créer mon premier web script.

J'ai créé directement via Alfresco dans le repertoire : /data disctionnary/Webscripts/org/Alfresco/Sample les fichiers suivants :
hello.get.desc.xml   

<webscript>
  <shortname>Hello</shortname>
  <description>Polite greeting</description>
  <url>/sample/hello</url>
  <authentication>user</authentication>
</webscript>

et hello.get.html.ftl

Hello ${person.properties.userName}

Ensuite quand j'essais d'accéder à la liste des services via cette adresse :
http://mon-serveur-alfresco/alfresco/service/index

J'ai ce message :

Alfresco    Web Script Status 401 - Unauthorized

The Web Script /alfresco/service/index has responded with a status of 401 - Unauthorized.

401 Description:   The request requires HTTP authentication.

Message:   07030057 Web Script org/springframework/extensions/webscripts/index.get requires admin authentication; however, a non-admin has attempted access.
   
Exception:   org.springframework.extensions.webscripts.WebScriptException - 07030057 Web Script org/springframework/extensions/webscripts/index.get requires admin authentication; however, a non-admin has attempted access.
   
   org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:294)
   org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
   org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
   org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)
   org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:378)
   org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
   java.lang.Thread.run(Thread.java:662)
   
Server:   Community v3.4.0 (d 3370) schema 4,113
Time:   Aug 3, 2011 6:21:00 PM
   
Diagnostics:   Inspect Web Script (org/springframework/extensions/webscripts/index.get)

Et ce alors que je suis bien authentifié sur l'interface Alfresco dans un autre onglet(j'ai essayé en admin et en User)

En revanche, en passant par cette adresse (dont je connais pas l'utilité d'origine ou la différence ) :
http://mon-serveur-alfresco/share/service/index
J'accède bien a la liste des services et je dispose du bouton "Refresh Web scripts". Quand j'essais de faire le refresh : il ne trouve jamais mon nouveau script …

Donc, je suis renvenu à l'ancienne adresse en pensant que si j'arrivais à passer avec l'authentification, ça fonctionnerai peut être.

En cherchant sur le forum, j'ai découvert ce POST: http://forums.alfresco.com/en/viewtopic.php?f=36&t=35615
J'ai voulu désactiver l'authentification de la manière décrite dans ce poste, (au moins pour les premiers tests en dev … ) mais je n'arrive pas à trouver ou placer les fichiers xml décrit comme devant être placés dans le repertoire : \<your alfresco tomcat>\shared\classes\alfresco\extension\templates\webscripts\org\springframework\extensions\webscripts

J'ai bien trouvé des repertoires quelques peu similaires dans le chemin, mais j'ai jamais trouvé de fichier semblables dans ces repertoires.
/var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/alfresco/templates/activities/org/alfresco
/var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresco

Voila … j'espère que j'ai été le plus clair possible.

Quelqun peut-il m'aider à trouver comment désactiver cette authenficiation, ou comment m'authentifier ?
5 Replies
bertrandf
Active Member

Re: web script Hello world : Unauthorized

Bonjour,

Il existe des webscripts situés coté entrepôt (webapp Alfresco) et des webscripts Share (webapp Share).
Pour lister/rafraichir les webscripts de l’entrepôt, il faut aller à l'adresse http://serveurSmiley Tongueort/alfresco/service/
Pour lister/rafraichir les webscripts Share, il faut aller à l'adresse http://serveurSmiley Tongueort/share/page/index

Je suppose que vous voulez interagir avec Alfresco et donc récupérer des informations stockées dans l’entrepôt, il faut donc dans votre cas créer un webscript qui se situera dans la webapp Alfresco.

Concernant votre questionnement, si vous ne voulez pas vous authentifier en accédant à votre webscript, il suffit de passer la balise <authentication> à none.
<authentication>none</authentication>
http://wiki.alfresco.com/wiki/Web_Scripts#Creating_a_Description_Document
Ça va fonctionner cependant étant donné que vous n’êtes pas authentifié auprès d'Alfresco, vous ne pourrez quasiment rien faire, vous ne pourrez pas récupérer ce que vous voulez (enfin je suppose car vous ne mentionnez pas ce que vous désirez faire).

Sinon si vous désirez vous authentifier, il suffit de demander un ticket à Alfresco. Il existe un webscript en GET et un en POST pour l'obtenir, il faut évidement passer en paramètre le login et le mot de passe de l'utilisateur qui désire s'authentifier.
Login
GET /alfresco/s/api/login?u={username}&pw={password?}

Login and establish a ticket.
Input

u
    cleartext username (must be URL encoded)
pw
    cleartext password (must be URL encoded)
Login (POST)
POST /alfresco/s/api/login

Login and establish a ticket.
Input
JSON Data Object.

username
    cleartext username
password
    cleartext password

Il faudra donc faire appel à une de ces deux URLs afin de récupérer un ticket et ensuite il faudra passer ce dernier en paramètre lors de l'appel à votre webscript.
http://localhost:8080/alfresco/s/api/login?u=admin&pw=admin
<ticket>TICKET_2b8e2a5676a41224d7f62da6de8b54bde854f6e7</ticket>

Le paramètre en question s'appelle alf_ticket, il faudra donc appeler votre webscript de telle façon :
http://serveurSmiley Tongueort/alfresco/s/url-webscript?alf_ticket=TICKET_2b8e2a5676a41224d7f62da6de8b54bde854f6e...

Suivant le langage que vous utilisez, il faudra dans un premier temps faire appel à Alfresco pour obtenir un ticket puis dans un second temps faire appel à votre webscript avec ce ticket.
Sinon pour se passer de l'authentification, il faut se tourner vers du SSO, par exemple CAS.

Cordialement.
encorearthur
Member II

Re: web script Hello world : Unauthorized

Bonjour et merci pour votre réponse !

J'ai bien créé mes scripts directement dans la webApp Alfresco.

En fait, je n'arrive pas à accéder à la liste des services d'Alfresco :
http://serveurSmiley Tongueort/alfresco/service/
ou
http://serveurSmiley Tongueort/alfresco/service/index

renvoie toutes les deux :

Alfresco    Web Script Status 401 - Unauthorized
The Web Script /alfresco/service/ has responded with a status of 401 - Unauthorized.
401 Description:   The request requires HTTP authentication.
Message:   07220074 Web Script org/springframework/extensions/webscripts/index.get requires admin authentication; however, a non-admin has attempted access.
   
Exception:   org.springframework.extensions.webscripts.WebScriptException - 07220074 Web Script org/springframework/extensions/webscripts/index.get requires admin authentication; however, a non-admin has attempted access.
   org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:294)
   […]

Je ne peux donc pas rafraichir la liste des services Alfresco … pour voir apparaître mon webscript helloworld dans la liste.

Et je ne sais pas ni comment m'authentifier (directement dans le navigateur je veux dire … ) ou désactiver l'authentification pour cette page …
J'ai bien compris que je peux changer la balise authentification de mon script, mais cela ne résoud pas le pbm pour la page d'index ….

Si la page d'index est elle-même un webscript (supposition!) et que je dois modifier la balise authentication de la même façon : Quel fichier faut-il modifier ?


Merci de votre aide !

Bien cordialement
encorearthur
Member II

Re: web script Hello world : Unauthorized

J'ajoute que j'ai essayé de me connecter avec un compte admin Alfresco et un compte utilisateur, et dans les 2 cas, la page affiche "Unauthorized…."
encorearthur
Member II

Re: web script Hello world : Unauthorized

Bonjour,

C'était une question de droit.

J'ai passé mon compte utilisateur en admin et j'accède bien à la liste des scripts et au bouton refresh (but de la manoeuvre).

Par contre, je trouve étrange qu'avec le compte admin de base je ne puisse pas accéder a cette liste …

Désolé pour le dérangement !

Merci
smithged
Member II

Re: web script Hello world : Unauthorized

Bonjour,

Je suis entrain de travailler sur un projet, je voudrais en savoir plus sur comment et où placer mes scripts pour que cela apparaisse dans share.

Pour être plus précis, j'ai appris que je pouvais le mettre dans le dossier web-extension mais quels sont les fichiers que je dois configurer pour pouvoir visualiser mes scripts dans share?

Dans l'attente de votre réponse,

Cdt.


Daniel