2017-09-28 3 views
0

J'ai une API RESTful dans lequel je veux mettre en œuvre un moyen de dire au client, que le mot de passe de l'utilisateur autorisé est arrivé à expiration et doit d'abord être défini avant que le client est autorisé à utilisez l'API.Forcer un changement de mot de passe sur l'API RESTful

Au moment où je retourne un 201 avec un jeton à l'intérieur comme ceci {"rows":["tokenxyz"]} sur POST/login. J'imagine une reconstruction pour renvoyer 201 {"rows":[{"token":"xyz", "expire_ts":"2017-30-28 07:54:21", "password_change_needed":1}]}. Après cela, je retournerais 403 FORBIDDEN sur chaque demande malgré la demande de correctif sur le mot de passe des utilisateurs.

Je ne suis pas vraiment sûr de ce plan. Y a-t-il de meilleurs moyens de répondre aux demandes REST mais dites au client qu'il doit changer le mot de passe? Je suis à la recherche de bonnes pratiques.

Répondre

1

meilleure pratique serait de revenir "401 Unauthorized". Vous n'êtes plus autorisé si votre jeton a expiré ou si vous devez changer votre mot de passe. 403 n'est applicable que si l'authentification a réussi.

What's the good http status code to return on expired password?

what should be HTTP status code for credentials Expired error/exception?

+0

A 401 sur une connexion me semble mal parce que les pouvoirs donnés sont valides. Seul l'administrateur me demande de définir un nouveau mot de passe en premier. Comme je rentre un 401 à la connexion cela signifierait que je ne suis pas autorisé à m'autoriser - ou ai-je tort avec cela? – MIB

+0

@MIB ah je pensais à l'affichage de nouvelles demandes à autre chose que/connexion –

+0

@MIB retour 403 devrait être bien. Cependant, je ne permettrais pas à cette première requête de renvoyer 201 si le mot de passe avait déjà expiré. –