IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Java Discussion :

[JGuard] pour comprendre...


Sujet :

Sécurité Java

  1. #21
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    le problème vient de ta configuration.
    au passage, je te conseille d'utiliser la version 0.80 beta2 , qui est la dernière version avant la 0.80 finale qui devrait sortir avant une semaine(la configuration sera la même que la finale).
    pour t'aider dans la configuration, la distribution 0.80 beta2 contient un fichier intitulé jGuardConfiguration.MysqlOnAuthenticationAndAuthorization.xml qui configure mysql pour la partie authentification et authorisation.


    CHarles.

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Suite du feuilleton Jguard...

    Ok, je suis passé en version 0.80b2. A priori il y a du mieux puisque j'arrive desormais à afficher ma première page. Enfin presque puisaue l'accès m'y est refusé. J'imagine que je dois configurer ça dans les permissions.

    Quoi qu'il en soit, je semble etre autentifié en "guest" au demarrage ce qui, je crois, est normal.

    Là où ça se complique c'est lorsque j'appelle le "LogonProcessURI" pour m'authentifier en admin. J'ai l'erreur suivante :


    DEBUG - we check that this permision /servlet?action=LogonProcess,http implies /servlet?action=LogonProcess,http,permission build from the user request
    DEBUG - pattern used to check access =/servlet
    DEBUG - path to be checked =/servlet
    DEBUG - access decision =true
    INFO - user= [ password=guest login=guest firstName=guest lastName=guest ] : uri(/servlet?action=LogonProcess)=logonProcessURI(/servlet?action=LogonProcess) implies logonProcess phase
    INFO - user= [ password=guest login=guest firstName=guest lastName=guest ] : AUTHENTICATION TYPE OTHER THAN BASIC (IT CAN BE FORM,CERT_CLIENT..) implies authenticate phase
    DEBUG - authSchemeItem=FORM
    DEBUG - authSchemeItem=FORM
    DEBUG - password validation =true for userId=1
    ERROR - authentication
    failed.LoginException JCaptcha service is unll: it has not been properly initialized

    net.sf.jguard.authentication.loginmodules.JCaptchaLoginException
    : JCaptcha service is unll: it has not been properly initialized
    at net.sf.jguard.authentication.loginmodules.JCaptchaLoginModule.login(
    JCaptchaLoginModule.java:102)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(
    Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(
    NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(
    DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(
    Method.java:585)
    at javax.security.auth.login.LoginContext.invoke(
    LoginContext.java:769)
    at javax.security.auth.login.LoginContext.access$000(
    LoginContext.java:186)
    at javax.security.auth.login.LoginContext$4.run(
    LoginContext.java:683)
    at java.security.AccessController.doPrivileged(
    Native Method)
    at javax.security.auth.login.LoginContext.invokePriv(
    LoginContext.java:680)
    at javax.security.auth.login.LoginContext.login(
    LoginContext.java:579)
    at net.sf.jguard.authentication.http.HttpAuthenticationUtils.useLoginContext(
    HttpAuthenticationUtils.java:85)
    at net.sf.jguard.authentication.http.HttpAuthenticationUtils.authenticate(
    HttpAuthenticationUtils.java:161)
    at net.sf.jguard.authentication.http.AccessFilter.authenticate(
    AccessFilter.java:748)
    at net.sf.jguard.authentication.http.AccessFilter.logonProcess(
    AccessFilter.java:588)
    at net.sf.jguard.authentication.http.AccessFilter.doFilter(
    AccessFilter.java:385)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
    ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
    ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(
    StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(
    StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(
    StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(
    ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(
    StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(
    CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(
    Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(
    Http11BaseProtocol.java:667)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
    PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
    LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
    ThreadPool.java:684)
    at java.lang.Thread.run(
    Thread.java:595)
    DEBUG - authentication failed ; user is redirected to /failed.jsp


    Est ce qu'il faut faire quelque chose de special avec le JCaptcha service ? Il sert à quoi ?

    Merci.

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Autre chose :

    Il semblerait que l'accès par jguard à ma base de donnée gérant les autorisations de mon appli fonctionne bien mais les permissions, domaines et principals ne semblent pas se charger correctement. Dans le log, j'ai extrait le passage suivant apres connexion à ma base :


    INFO - there are some principals in database
    WARN - permission home not found in JGPermissionCollection#getPermission!!!
    WARN - permissions=[]
    WARN - permission home is not present in the JGPermissionCollection
    WARN - permission all not found in JGPermissionCollection#getPermission!!!
    WARN - permissions=[]
    WARN - permission all is not present in the JGPermissionCollection
    INFO - Principal guest inherites from principal admin
    Rq : "home" et "all" sont deux permissions que j'ai défini dans ma base d'autorizations.

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    Bonjour,
    JCaptcha sert à générer un captcha(image de sécurité représentant un code afin d'éviter les robots spammeurs).
    si vous n'avez pas intégré JCaptcha dans la page de login (comme dans jguardExample de la version 0.80 beta2), il suffit d'enlever ce logiModule du fichier de configuration.
    concernant la base et vos permissions:
    est-ce que tu es parti d'une base vide?
    => si tu garde le fichier de stockage XML, et que la base est vide, automatiquement un import de ces données dans les tables sera effectué.
    avgec l'exemple de la version jGUard 0.80 betaa2 , tu pourras voir des écrans te permettant de créer les permissions et de les associer à des rôles; puis de lier ces rôles aux utiliasteurs: plus d'opérations directes en bases ne sont utiles, les écrans facilitant le travail.

    cela t'aide-t-il?

    Charles.

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Ok, j'ai desactivé JCaptcha...

    En fait, je me suis fait ma propre appli pour administrer les permissions et les principals. Cette appli crée les tables et les remplie à priori comme il faut.

    Par contre j'ai vu que les tables ne sont pas les memes entre la version 0.70 et 0.80. J'ai donc modifié les choses en consequences. Il y a juste les tables "jg_st_*" dont je ne comprend pas l'utilité.

    J'arrive alors à identifier et authentifier un utilisateur. Par contre jguard ne charge pas ses principals. Il n'a donc aucun droit.
    Et comme je le disais dans mon precendent post, les permissions de la partie autorisation ne se chargent pas.

    Je vais continuer à chercher en m'inspirant de l'application fournie avec la version 0.80. Le probleme vient surement de la structures de mes tables. Je te tiens au courant.

    Merci pour ton aide.

  6. #26
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    En fait, je me suis fait ma propre appli pour administrer les permissions et les principals.
    => si tu es sous Struts, pourquoi ne pas réutiliser la webapp jGuardExample?

    pour les tables jg_st-*, elles correspondent au SubjectTemplate, qui définit les credentials requis lors de la création d'un utilisateur.

    pour ton probleme de chargement des permissions, as-tu vu qu'il y a la notion de principal du coté authentification et aussi coté authorizations?
    il faut que le nom de la webapp correspondent au nom de l'application défini dans le principal coté authentification, et que le nom du principal correspodnent des deux cotés.
    Charles.

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    Ok, ça a l'air de bien fonctionner... En fait, il faut que je laisse JGuard créer les bases de données.

    Enfait, j'utilise ma propre appli d'administration parce que : d'une part je n'utilise pas Struts et d'autre part, je peux administrer plusieurs applications depuis celle ci.

    Par contre je ne comprend pas comment gérer les descendances de principals.
    J'ai un "guest" et je declare "admin" en tant que descendant de "guest". Comme ça, j'imagine que admin hérite de toutes les permissions de son père. Or, il semble se passer l'inverse. C'est "guest" qui obtient les droits de "admin". Ets-ce normal ?

  8. #28
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    c'est vrai que ce n'est pas forcément logique, pour le sens commun.....
    mais en fait ce fonctionnement découle du standard RBAC (Role based Access Control) edicté par l'institut américain NIST.
    donc, pour résumer, priorité aux ancêtres.


    sinon, pour ta webapp, quelle framework web utilises-tu?


    Charles.

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut
    ouaip, merci les ancetres... J'ai juste inversé principal_desc_id et principal_asc_id dans mon mapping objet et ça marche nickel

    Pour ma Webapp, j'utilise un framework maison basé sur FreeMarker. Ca demande un peu plus de boulot que Struts mais c'est beaucoup plus flexible.
    J'attend avec impatience la solution miracle pour gérer la partie Vue des appli J2EE... J'ai entendu parler de Shale. Sur le papier ça a l'air bien mais c'est encore tout jeune on dirait. Enfin bref, y'a du boulot quoi...

  10. #30
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    cool si ton problème est résolu!

    pour info, la version finale de jGuard 0.80 est imminente.
    la prochaine sera la 1.0 avec beaucoup de nouvelles fonctionnalités.
    on utilisera maven2/svn, ce qui impl
    ique pour maven une gestion des sources plus normalisée.
    la conséquence est notamment l'utilisation de plusieurs projets exemples (dont un toujours un basé sur Struts), et en plus un basé sur Swing pour montrer l'utilisation de jGuard pour sécuriser les applications standalone.
    la démonstration de sécurisation d'une application jsf me tente aussi.

    toutes les participations sont acceptées.


    @ bientôt,
    Charles.

  11. #31
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 36
    Par défaut Comment récupérer l'erreur produite dans le LoginModule dans la page d'erreur?
    Bonjour,

    je voudrais savoir comment je peux récupérer dans la page d'erreur le type de problème (Exception) qui s'est produit dans le LoginModule afin de faire une message personnalisé.

    Merci.

    Stéphane

  12. #32
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    Bonjour,
    lors de la phase d'authentification, les loginModules peuvent lever une loginException.
    jguard sauve la Classe et le mesasge localisé dans la session via ces instructions(e étant la loginException levée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session.setAttribute(HttpConstants.LOGIN_EXCEPTION_MESSAGE,e.getLocalizedMessage());
    session.setAttribute(HttpConstants.LOGIN_EXCEPTION_CLASS,e.getClass());
    dans l'exemple d'application Struts fourni avec jGuard, la classe AuthenticationFailedAction crée des erreurs Struts appropriés dont voici l'extrait de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
    		HttpSession session = request.getSession();
    		ActionErrors errors = new ActionErrors();
    		// prevent bug when accessing directly to authorizationFailedURI without authenticate
    		if ((Class) session.getAttribute(HttpConstants.LOGIN_EXCEPTION_CLASS) != null) {
    			ActionMessage amClass = new ActionMessage(((Class) session.getAttribute(HttpConstants.LOGIN_EXCEPTION_CLASS))
    					.getName(), false);
    			ActionMessage amMessage = new ActionMessage((String) session.getAttribute(HttpConstants.LOGIN_EXCEPTION_MESSAGE),
    					false);
    			// the LOGIN_EXCEPTION_CLASS is not put in the errors mechanism to
    			// hide to the final user the exception class => this is not a user concern,
    			// and can be evaluated as a security risk (give information about what
    			// security system is used to securize your webapp)
    			// errors.add(HttpConstants.LOGIN_EXCEPTION_CLASS,amClass);
    			errors.add(HttpConstants.LOGIN_EXCEPTION_MESSAGE, amMessage);
    			saveMessages(request, errors);
    		}
    		return mapping.findForward("authenticationFailedOK");
    	}
    je pense que cela pourra t'aider,


    Charles.

Discussions similaires

  1. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 14h22
  2. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 18h54
  3. Conseil livre pour comprendre scripts
    Par Filippo dans le forum Linux
    Réponses: 9
    Dernier message: 13/10/2005, 11h36
  4. Réponses: 4
    Dernier message: 28/07/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo