6 votes

Envoi d'un message avec 401 : Asp.net Web-api

Je suis en asp.net web API. Dans la méthode de connexion, je vérifie l'utilisateur / mot de passe par rapport à la db et s'ils ne correspondent pas, je renvoie le code d'état 401 ainsi que méthode utilisateur ou mot de passe non valide comme

var content = new StringContent("Nom d'utilisateur ou mot de passe incorrect");
var message = new HttpResponseMessage(HttpStatusCode.Unauthorized);
message.Content = content;
throw new HttpResponseException(message);

Mais l'API semble ignorer mon message et renvoyer simplement du code HTML comme

401 - Non autorisé : Accès refusé en raison d'informations d'identification non valides.

<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->

Erreur de serveur

  401 - Non autorisé : Accès refusé en raison d'informations d'identification non valides.
  Vous n'avez pas la permission de voir ce répertoire ou cette page avec les informations d'identification que vous avez fournies.

Pourquoi cela ? Comment puis-je le remplacer?

1voto

Sixto Saez Points 9582

Une cause potentielle de cette réponse est que le site Web IIS est configuré pour permettre l'authentification Forms. Regardez ce ancien mais toujours valable poste sur la configuration de l'IIS pour désactiver l'authentification Forms pour l'API Web.

1voto

Darrel Miller Points 56797

Je crois que la réponse que vous obtenez provient de IIS et non de Web Api. Si vous souhaitez gérer le processus d'authentification vous-même au sein de votre API, vous devez dire à IIS que l'accès anonyme est autorisé afin qu'il se mette en travers de votre chemin.

De plus, lorsque vous renvoyez un code 401, VOUS DEVEZ renvoyer un en-tête www-authenticate (voir http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2). Cela permet au client de savoir quel type d'authentification est autorisé.

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