Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 20/12/2012 17:24:54

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Pages en accès réservé

Bonjour,

le système d'authentification semble avoir changé et ne fonctionne plus pour la version 3.4. Nous voyons apparaître un formulaire

Offline

#2 20/12/2012 17:35:26

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,091

Re: Pages en accès réservé

Bonjour,
non il n'a pas changé (enfin je ne crois pas) mais je pense dans votre cas que c'est un problème de configuration.
c'est l'application site qui est en charge d'authentifier les visiteurs.
est-il possible qu'à la migration vous soyez reparti du template pour l'application site ?

cette configuration se passe dans WEB-INF/param/runtime.xml ou dans l'admin du site, icone Plugins.
ensuite il faut qu'il y ait cohérence entre l'authentification choisie et le usermanager, ainsi qu'avec le fichier WEB-INF/param/authentication.xml
enfin la cohérence doit se faire aussi coté appli CMS en choisissant un UsersManagers.FO cohérent avec celui du front


Raphael Franchet
Expert Ametys

Offline

#3 09/01/2013 12:21:27

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Re: Pages en accès réservé

Bonjour et meilleurs voeux 2013 à toute l'équipe d'anyware !

Je reprends mes investigations sur ce sujet. Je n'arrive pas à configurer correctement les pages privées d'Ametys odf (le problème est le même sur Ametys tout court d'ailleurs).

Coté back-office, j'ai ça :

http://oi49.tinypic.com/mj67er.jpg

Coté front, j'ai ça :

http://oi45.tinypic.com/2lkr19t.jpg

dans le fichier authentification.xml, j'ai ça :

<authentications>
<authentication>org.ametys.runtime.plugins.core.authentication.mixed.MixedSourceUsersManagerAuthentication</authentication>
</authentications>

Au final, je vois bien une page d'authentification sur le front qui me demande un login/mot de passe et j'ai cette erreur :

ava.lang.NullPointerException at org.ametys.runtime.datasource.ConnectionHelper.getConnection(ConnectionHelper.java:98) at org.ametys.runtime.plugins.core.user.jdbc.ModifiableCredentialsAwareJdbcUsersManager.checkCredentials(ModifiableCredentialsAwareJdbcUsersManager.java:101) at org.ametys.runtime.plugins.core.user.mixed.CredentialsAwareLdapAndJdbcUsersManager.checkCredentials(CredentialsAwareLdapAndJdbcUsersManager.java:188) at org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication.login(UsersManagerAuthentication.java:55) at org.ametys.runtime.authentication.AuthenticateAction._checkAuth(AuthenticateAction.java:152) at org.ametys.runtime.authentication.AuthenticateAction.act(AuthenticateAction.java:74) at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:120) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at org.apache.cocoon.Cocoon.process(Cocoon.java:699) at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1159) at org.ametys.runtime.servlet.RuntimeServlet._doService(RuntimeServlet.java:135) at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:92) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619)

Merci de me dire ce que nous devons modifier.


Jean-Marie

Offline

#4 09/01/2013 12:39:14

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,091

Re: Pages en accès réservé

Bonjour et meilleurs voeux aussi.

Je pense simplement que dans l'application front, la base de données n'est pas configurée... voire, l'accès à la base de données est désactivée (feature datasource dans le runtime.xml)


Raphael Franchet
Expert Ametys

Offline

#5 09/01/2013 17:54:43

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Re: Pages en accès réservé

Bon, ok, effectivement, le fait de modifier le UsersManagers.FO rajoute  la conf. ldap coté site (qu'il faut donc remplir).
l'authentification fonctionne mais si on se trompe, on a droit a une belle exception :

ava.lang.NullPointerException at org.ametys.runtime.datasource.ConnectionHelper.getConnection(ConnectionHelper.java:98) at org.ametys.runtime.plugins.core.user.jdbc.ModifiableCredentialsAwareJdbcUsersManager.checkCredentials(ModifiableCredentialsAwareJdbcUsersManager.java:101) at org.ametys.runtime.plugins.core.user.mixed.CredentialsAwareLdapAndJdbcUsersManager.checkCredentials(CredentialsAwareLdapAndJdbcUsersManager.java:188) at org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication.login(UsersManagerAuthentication.java:55) at org.ametys.runtime.authentication.AuthenticateAction._checkAuth(AuthenticateAction.java:152) at org.ametys.runtime.authentication.AuthenticateAction.act(AuthenticateAction.java:74) at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:120) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at org.apache.cocoon.Cocoon.process(Cocoon.java:699) at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1159) at org.ametys.runtime.servlet.RuntimeServlet._doService(RuntimeServlet.java:135) at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:92) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)

Je suppose qu'il faut une rajouter une page d'erreur ???

jean-marie

Offline

#6 10/01/2013 11:14:56

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,091

Re: Pages en accès réservé

Non.
Cette erreur est due au fait que vous avez dû sélectionner une authentification du type LDAP + SQL
A savoir qu'elle cherche d'abord dans le LDAP et en cas d'insuccès, demande au SQL.
Et dans votre cas, c'est la partie SQL qui fait la NPE

Donc, soit vous n'avez pas besoin du SQL (qui permet d'ajouter des utilisateurs sur le site, sans passer par le LDAP) et dans ce cas il faut sélectionner un usersmanager LDAP seulement
Soit vous avez besoin du SQL et dans ce cas, il faut débloquer l'accès à la base de donnée : par exemple dans le runtime.xml il faut mettre en commentaire la désactivation de la feature core/runtime.datasource (cela peut se faire aussi depuis l'écran de plugins de l'admin) et il vous faudra probablement ajouter le driver...


Raphael Franchet
Expert Ametys

Offline

#7 11/01/2013 10:56:38

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Re: Pages en accès réservé

Ok merci ! Cela marche pour l'instant.

Coté back, j'ai donc mis : org.ametys.web.frontoffice.DefaultFrontOfficeUsersManager
Coté front, il y a maintenant : org.ametys.runtime.plugins.core.CredentialsAwareLdap

Les utilisateurs uniquement ldap peuvent accéder à l'application via le formulaire web login/mot de passe.

Quelques questions :

  • l'authentification est-elle sécurisée ?

  • Si je souhaite mettre en place la double authentification LDAP+utilisateurs locaux, j'ai bien compris que je devrai changer le UsersManagers.FO coté Front et faire des modifs (runtime + driver...). Ou puis-je trouver une doc sur le sujet qui m'indique la marche à suivre ?

Merci beaucoup.

Jean-Marie

Offline

#8 11/01/2013 11:16:25

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,091

Re: Pages en accès réservé

Bonjour, la doc intégrateur qui explique la marche à suivre est en cours de rédaction (pour la 3.5). En attendant vous pourrez trouver des éléments sur ce forum ou poser les questions qu'il vous faut. En l’occurrence, vous n'étiez pas très loin avec votre configuration pour faire cela (je pense qu'il manquait juste le déblocage de la base de données).
Coté sécurité, parlez-vous du stockage du mot de passe dans la base de données ? (dans ce cas, la réponse est oui) ou du processus de connexion lui-même ? (dans ce cas, pour sécuriser, le seul moyen est de passer en https - à moins que vous n'utilisiez CAS car dans ce cas le https est géré au moment de la connexion)


Raphael Franchet
Expert Ametys

Offline

#9 11/01/2013 11:39:26

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Re: Pages en accès réservé

La question sur la sécurité concernait effectivement le processus de connexion. Et nos sites sont en http et pas en https.

D'autre part, nous ne pouvons pas utiliser le CAS puisque nous avons une double authentification (LDAP + autres utilisateurs qui ne sont donc pas dans notre LDAP et que nous gérons coté back en les créant à la main dans Ametys).

Nous souhaitons mettre en place, de manière sécurisée, il va s'en dire, une authentification de même type, coté front office. Ma question est donc la suivante : quelle est la meilleure stratégie à mettre en œuvre dans ce cas de figure et quelle est la marche à suivre ? Est-ce possible ?

Merci !

jean-marie

Offline

#10 11/01/2013 11:49:31

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,091

Re: Pages en accès réservé

Déjà, même avec des utilisateurs LDAP + d'autres en SQL, vous avez la possibilité d'utiliser une authentification CAS+Basic : à savoir qu'un utilisateur déjà loggué dans CAS n'aura pas besoin de se logguer, et sinon, une popup de login lui sera présentée.

Ensuite, le plus simple serait de passer tout le site en https, mais si vous ne le souhaitez pas, il faut écrire les règles apache pour que l'url d'authentification soit redirigée en https. Cela prendrait la forme,

si l'url demandée est _authenticate/** en http on redirige en https
si l'url demandée est en https mais n'est pas _authenticate/** on redirige en http

par contre, autant nous avons déjà mis en place des sites fullhttps, autant pour ce que je vous propose au-dessus, je ne l'ai jamais mis en pratique...


Raphael Franchet
Expert Ametys

Offline

Board footer

Powered by FluxBB