2 votes

Quel est le flux de travail recommandé pour effectuer l'authentification web (codes d'état HTTP) ?

J'écris une application web qui nécessite une connexion de l'utilisateur. Comme vous pouvez le constater, il existe de nombreux flux de travail pour répondre aux informations d'identification invalides des utilisateurs. La plupart des navigateurs sont capables de stocker les informations d'identification de l'utilisateur (acceptées) dans leur mémoire d'informations d'identification.

Ma question initiale se divise en deux parties :

  1. Quel code d'état HTTP doit être envoyé à l'utilisateur si un site nécessite un utilisateur connecté ? Je ne parle pas du cas où l'utilisateur demande lui-même la page de connexion.
  2. Quel code de statut HTTP doit être envoyé à l'utilisateur s'il a saisi des informations d'identification invalides ?

HTTP 401 est uniquement pour l'authentification "à l'ancienne" via les invites du navigateur, je suppose. J'utilise mes propres pages de connexion pour me débarrasser de ces invites du navigateur.

2voto

Michael Points 2524

Il existe de nombreuses normes pour l'authentification. Vous trouverez quelques exemples ici : http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html Le code d'erreur 401 que vous avez décrit est utilisé pour l'authentification de base. Il n'est pas ancien :).

Lorsque vous utilisez votre propre formulaire de connexion, veuillez suivre le flux d'authentification standard du formulaire :

  1. Si un utilisateur accède à une ressource protégée sans authentification, il est redirigé vers une page de connexion (code HTTP 302).
  2. Afficher la page de connexion (code HTTP 200). Soumettre un nom d'utilisateur à une URL dédiée (généralement c'est j_security_check)
  3. Après une authentification réussie, redirection vers la ressource protégée d'origine (code HTTP 302).
  4. Après un échec de l'authentification, la page de connexion s'affiche à nouveau avec le code d'erreur (code HTTP 200).
  5. Si un utilisateur accède à une ressource protégée après que l'authentification montre la ressource (code HTTP 200)

Pour distinguer une session authentifiée d'une session non authentifiée, vous pouvez utiliser un cookie HTTP. Il est recommandé d'utiliser le GUID et non les informations de l'utilisateur (par exemple le nom d'utilisateur).

0voto

Steve Kallestad Points 1080

401 Unauthorized / 407 Proxy Authentication Required sont les seuls codes d'état qui sont pertinents.

401 Unauthorized ne doit être présenté que si vous refusez l'accès à une ressource - PAS si vous redirigez ou présentez une page de connexion.

407 est identique à 401, sauf que vous attendez que l'authentification soit gérée par un service externe et que l'on vous fournisse un champ d'en-tête Proxy-Authenticate.

Plus généralement, vous présentez à l'utilisateur un message 200 OK et une page de connexion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X