2010-02-02 5 views
2

Je suis complètement nouveau pour les concepts de connexion et d'authentification. Je travaille sur une application Web Glassfish qui devrait présenter un contenu général à tout visiteur, et du contenu supplémentaire pour les utilisateurs enregistrés avec un nom d'utilisateur et un mot de passe. J'ai lu le didacticiel Java EE sur la sécurité et j'ai pensé que l'authentification basée sur un formulaire ou HTTP répondrait à mes besoins (le visiteur est invité à fournir des informations d'identification lorsqu'il essaie de parcourir un contenu sécurisé).Authentification Glassfish: le domaine peut-il être une base de données externe

Cependant, ma première supposition était que les utilisateurs enregistrés devraient être stockés dans une base de données externe avec leur mot de passe haché et salé. La sécurité de l'application Web dans Glassfish semble s'appuyer sur le domaine renseigné manuellement directement sur le serveur d'applications (définissant l'utilisateur et les groupes et les mappant aux rôles de l'application). Ai-je mal compris à quoi sert la sécurité sur Glassfish? Ou un domaine peut-il être une base de données externe en dehors du serveur d'application? Tout lien vers la documentation sur ce sujet serait utile pour moi.

Nous vous remercions à l'avance

Tart

Répondre

1

Il est effectivement possible. Dans Glassfish, accédez à Configuration/Security/Realms, créez un nouveau domaine et définissez le nom de la classe sur com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm. Indique la ressource JDBC liée à la base de données et indique la table et les colonnes où le nom d'utilisateur/mot de passe est stocké. La base de données doit également contenir une table pour les groupes auxquels l'utilisateur doit appartenir pour avoir accès. Indiquez ceux aussi.

Dans l'application, configurez web.xml et sun-web.xml avec le nom de domaine comme d'habitude.

+0

Docs: http://docs.sun.com/app/docs/doc/820-4495/ggmww?a=view Blog entrée qui tire parti de MySQL: http://blogs.sun.com/swchan/entry/jdbcrealm_in_glassfish_with_mysql – vkraemer

+0

Bien qu'il soit presque possible, je ne pense pas que vous pouvez avoir le sel JDBCRealm le mot de passe avant le hachage, qui est en fait un sérieux vulnérabilité imho. En outre, l'implémentation de Glassfish dans le domaine présente de sérieuses lacunes en ce qui concerne le mappage de groupe/rôle, car les rôles doivent être «codés en dur» dans sun-web.xml. Il y a un moyen de contourner cela en utilisant des vues, mais c'est une solution artificielle. Vous pouvez résoudre le problème de sel en implémentant votre propre domaine, mais résoudre le problème de mappage de groupe/rôle est plus difficile à mon avis. –

Questions connexes