Salut,
J'ai fait quelque recherche sur le google concernant la sécurité en Java web (pour débutant) et j'ai décider d'essayer Apache Shiro, mais les quelque rar tuto que j'ai vu sont anglais,
Si quelqu'un a un lien pour un tuto en francais ?
Salut,
J'ai fait quelque recherche sur le google concernant la sécurité en Java web (pour débutant) et j'ai décider d'essayer Apache Shiro, mais les quelque rar tuto que j'ai vu sont anglais,
Si quelqu'un a un lien pour un tuto en francais ?
Bonjour
En effet, je n'avais pas vu de documentation en français à l'époque où je m'en étais servi. Ceci dit le tutoriel en anglais est plutôt abordable. Au pire tu peux toujours tenter un "google translate"
Est-ce que tu as des questions précises sur l'implémentation ? Est-ce que tu as déjà codé quelque chose ?
Mathieu
Bon là je doit avouer que j'ai pas compris la question,
Mais c'est pour une application java web, je veux que l'utilisateur puisse accèder à certaine page qu'après avoir authentifier et que l'administrateur peut lui aussi acceder à des page spécifiques en plus de ceux d'un utilisateur simple
Non pas encore.
OK, voila ce que j'ai essayer:
1 J'ai télécharger Shiro-web.jar.
2 j'ai creer un Java web Application (sur NetBeans)
3 J'ai ajouter le .jar au dossier Libraries
4 J'ai creer le fichier web.xml est j'ai ajouter ceci:
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
20
21
22
23
24
25
26
27
28
29 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> <listener> <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> </listener> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping>
5 J'ai créer le fichier shiro.ini dans web\WEB-INF et J'ai ajouter le code suivant:
6 Et puis la page login.jsp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 [main] authc.loginUrl = /login.jsp [users] admin = password [urls] /index.jsp = authcBasic
et quand je lence l'application l'application,j'ai l'erreur suivant:
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
20
21
22
23 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Login Page</title> </head> <body> <h2>Login</h2> <form method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" /> <br/> <label for="password">Password:</label> <input type="password" id="password" name="password" /> <br/> <input type="submit" value="Login" /> </form> </body> </html>
Est-ce correcte? Ou dois-je ajouter/modifier quelque chose
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
20
21
22 init: deps-module-jar: deps-ear-jar: deps-jar: Created dir: C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\web\WEB-INF\classes Created dir: C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\web\META-INF Copying 1 file to C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\web\META-INF Copying 4 files to C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\web library-inclusion-in-archive: library-inclusion-in-manifest: Created dir: C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\empty Created dir: C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\generated-sources\ap-source-output compile: compile-jsps: In-place deployment at C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\web Initializing... deploy?DEFAULT=C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\build\web&name=ShiroTestApp&contextroot=/ShiroTestApp&force=true failed on GlassFish Server 3+ Exception while deploying the app : java.io.IOException: org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed. C:\Users\WORK\Documents\NetBeansProjects\ShiroTestApp\nbproject\build-impl.xml:721: The module has not been deployed. See the server log for details. BUILD FAILED (total time: 7 seconds)
Bonjour,
Comme te l'indique l'erreur dans tes logs, ton web.xml n'est pas bon. Il faut que ce que tu as rajouté soit dans la balise principale "web-app".
Ensuite il te faudra aussi utiliser la librairie shiro-core.jar. De plus si tu veux voir des logs il te faudra aussi slf4j-api.jar ainsi qu'éventuellement un logger comme slf4j-simple.jar par exemple.
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
20
21
22
23 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <session-config> <session-timeout>30</session-timeout> </session-config> <listener> <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> </listener> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> </web-app>
Enfin ton fichier shiro.ini me semble incomplet. Il te faudra mettre "authc" pour pouvoir utiliser ton formulaire d'authentification. Mais d'un autre coté utiliser "authcBasic" (qui va ouvrir une boite de dialogue de ton navigateur) est un bon test pour savoir si Shiro est bien appelé.
Mathieu
Merci Mathieu,
J'ai recréer une autre application utilisant maven (ça à l'air plus facile avec),
donc là, J'ai toutes les dependance installées :
voila le web.xmlj'ai creer le fichier shiro.ini dans /WEB-INF
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
20
21
22
23
24
25
26
27
28 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <session-config> <session-timeout> 30 </session-timeout> </session-config> <listener> <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> </listener> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/index.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> </web-app>
et quand je lance l'application , il m'ouvre la page d'acceuil sans me demander de "loginer" d'abord.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [main] authc.loginUrl = /login.jsp [users] admin = password [urls] /login.jsp = authc /app/** = authc
le server glassfish m'affiche cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 INFO: PWC1412: WebModule[/ShiroTest3_mvn] ServletContext.log():Cleaning up Shiro Environment INFO: PWC1412: WebModule[/ShiroTest3_mvn] ServletContext.log():Initializing Shiro environment GRAVE: 148 [http-thread-pool-4848-(2)] INFO org.apache.shiro.web.env.EnvironmentLoader - Starting Shiro environment initialization. GRAVE: 1281 [http-thread-pool-4848-(2)] INFO org.apache.shiro.web.env.EnvironmentLoader - Shiro environment initialized in 1115 ms. INFO: Loading application com.mycompany_ShiroTest3_mvn_war_1.0-SNAPSHOT at /ShiroTest3_mvn INFO: com.mycompany_ShiroTest3_mvn_war_1.0-SNAPSHOT was successfully deployed in 2*120 milliseconds.
Bonjour
En effet avec Maven, c'est plus simple de gérer les dépendances
Sinon tu as réussi à lancer Shiro ! Par contre il ne dit pas grand chose.
Tu devrais changer ton niveau de log en "debug" pour y voir plus clair.
Dans ton shiro.ini tu devrais protéger toutes tes URLs :
Je pense que c'est pour ça qu'il ne te demande pas de te logger. Tu demandes l'affichage de l'URL "/ShiroTest3_mvn" mais tu protèges seulement "/app/*".
Code : Sélectionner tout - Visualiser dans une fenêtre à part /** = authc
Mathieu
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager