Création de session utilisateur

Nikko
Création de session utilisateur

Bonjour à vous !

Je suis en stage en entreprise et je dois créer un module de réservation qui sera ajouter sur l'intranet de l'entreprise. Mon programme dispose actuellement d'un système d'identification par requête SQL (l'utilisateur rentre son login/mdp et la requête vérifie si c'est correct et redirige vers la page web correspondante).

Cette méthode ne plaît pas du tout à mon tuteur. Il souhaite que je remplace ce système d'identification par un jeu de session d'utilisateur. Je n'ai jamais développer ça.

Je m'adresse donc à vous afin de savoir quelle est la marche à suivre ? J'ai regarder sur internet et je n'ai trouvé que ce ceci. Je trouve ça un peu trop bref et je recherche donc des informations un peu plus précises (sans pour autant me mâcher le travail, je suis en stage, je dois apprendre :wink: )

En vous remerciant par avance,
Nikko

fredericmazue

Quote:
je n'ai trouvé que ce ceci.

:?:
Quote:
Je trouve ça un peu trop bref

En effet :)
Nikko

Aurais-tu plus d'informations à me faire partager Frédéric ?

Je te remercie par avance !

willbback

Certain serveurs d'application proposent la gestion des session en standard (comme Websphere, tomcat etc...). Cherche "j_security_check" sur internet avec le nom de ton serveur d'application. En principe tu trouvera la solution à ton problème.
Tu peux définir la politique de sécurité au sein du serveur d'application avec JAAS. Regarde dans les docs, il y a souvent un chapitre sur la sécurisation des applications internets.
Une solution tierce est d'écrire le système toi même. Il te faux faire ce point en 2 parties :
_ sécurisé l'accès aux servlet
_ sécurisé l'accès aux JSP.
Lors d'un appel de la JSP, tu peux testé si la session de l'utilisateur est bien positionnée (request.getSession()).
Concernant la Servlet, tu peux faire la même chose. Je te conseille d'utiliser un filtre, c'est plus propre et il se déclenchera avant l'appel de la servlet,c e qui te permettra de rediriger ton utilisateur vers la page de login de ton site.
Bref, il y a trop de solutions à ton problème.....

Nikko

Merci beaucoup Willback, je vais effectuer la recherche que tu m'as conseillé !

fredericmazue

Quote:
Aurais-tu plus d'informations à me faire partager Frédéric ?

Il a du y avoir incompréhension. Tu as dit: "J'ai regarder sur internet et je n'ai trouvé que ce ceci." Mais, il me semble, tu n'as pas dit ce dont il s'agit.
Nikko

En fait, je ne pense pas que le "j_security_check" soit une bonne solution, puisque, d'après mes recherches et ce que j'ai compris, il faut forcément que l'utilisateur entre un login/mdp. Or, c'est exactement ce que ne veut pas mon tuteur.

Je récupère le login et le mdp via une requête HTTP POST et il faut que ca garde en mémoire l'utilisateur.
Alors, est-ce que le fait de garder ce login et ce mdp dans mon url de chaque page JSP serait suffisant pour pouvoir effectuer toutes les actions que je désire (par exemple effectuer une réservation via un formulaire comprenant les champs "type de produit", "quantité", "personne réservant", "date de retour") ?

fredericmazue

Quote:
et ce mdp dans mon url

Un mot de passe dans une URL. Je dois mal comprendre.... :shock:
willbback

Je pense que tu mélange un peu les 2 sujets.
Ce que je t'ai indiqué est une gestion global des accès au site. Une fois authentifié, Une session est mise en oeuvre pour l'utilisateur. Tant que cette session est valable, il n'y aura pas besoin de se reconnecter.
Concernant l'envoi de mot de passe et de login via l'url, ce n'est pas un problème. En effet, tu peux appellé directement la fonction, il suffit que ton formulaire s'envoi automatiquement par exemple.
Il reste toujours la solution du filtre sur les servlets, lorque tu va recevoir ta requête "POST", ton filtre sera activé. Tu n'a plus qu'à lire les paramètres mots de passe+login, faire la vérification dans ta base pour savoir si l'utilisateur est autorisé puis placer une session avec les informations dedant au besoin. A chaque appel de servlet, tu vérifie si la session est toujours placé. Tu n'auras pas besoin de transmettre via les url de ton site le login et mot de passe puisqu'ils seront en session.
Voilà un exemple rapide....

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Représente
 * <p>
 * @since
 * @author beckw
 */
public class LoginFilter implements Filter {

	protected FilterConfig filterConfig;

	// Applelé une fois, lorsque ce filtre est instancié.
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}

	public void destroy() {
		this.filterConfig = null;
	}

	// Appelé pour chaque demande mappée à ce filtre.
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
																								throws java.io.IOException,
																								ServletException {

		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		if (req.getSession() != null && req.getSession().getAttribute("login") != null) {
			// l'utilisateur est déjà connecté.....
		} else {
			// on récupére les paramètres de la requête...
			String username = req.getParameter("login");
			String password = req.getParameter("pwd");
			// test de connexion a réaliser ici....
			if (testConnexion(username, password)) {
				// l'utilisateur est autorisé, on place les informations en session....
				req.getSession().setAttribute("login", username);
				req.getSession().setAttribute("pwd", password);
			} else {
				// on interrompt la requête car l'utilisateur n'est pas autorisé.
				return;
			}
		}
		chain.doFilter(request, response); // appelle le filtre suivant de la chaîne ou la servlet
		// appellée

	}
}
Nikko

fredericmazue wrote:
Quote:
et ce mdp dans mon url

Un mot de passe dans une URL. Je dois mal comprendre.... :shock:

Je sais que ça paraît pas sécurisé (et ça ne l'est pas :wink: ) mais c'est pour un intranet, donc la sécurité peut rester médiocre. D'autant plus que le niveau informatique des personnes de la société reste relativement faible (pour ne pas dire complètement nul).

@willback

En effet, je m'égarais très certainement. Je vais relire plus attentivement le lien et m'aider du bout de code que tu as fourni dans ton poste précédent. En tout cas, je te remercie beaucoup pour le temps que tu as passé à m'aider !

fredericmazue

Quote:
Je sais que ça paraît pas sécurisé (et ça ne l'est pas ) mais c'est pour un intranet, donc la sécurité peut rester médiocre. D'autant plus que le niveau informatique des personnes de la société reste relativement faible (pour ne pas dire complètement nul).

Hum. Nul en informatique ne veut pas dire crétin.
Enfin c'est toi qui voit. Si j'étais ton tuteur, je n'accepterais en aucun cas qu'un mot de passe soit dans une URL, même pour un Intranet. Et puis demain l'entreprise va peut être embaucher une personne quelconque et dont le hobby est l'informatique. Alors là....
Il est bien connu qu'une grande marjorité des problèmes de sécurité et des malveillances sont internes aux entreprises.
Enfin c'est toi qui voit.

Lol :lol:

Nikko

Je ne fais juste que le travail que l'on me demande, ils gèreront leur problème de sécurité quand ils s'apercevront de cette erreur :wink:
Mais c'est gentil de ta part de souligner cette insécurité.