web-dev-qa-db-fra.com

L'autorisation a été refusée pour cette demande - Nouveau projet API Web

Je viens de créer un nouveau projet d'API Web (à l'aide de MVC) dans Visual Studio 2015 et, à des fins de test, j'ai exécuté ce projet mais me suis retrouvé avec une erreur.

Après avoir exécuté le projet, la page d'accueil s'affiche correctement, mais lorsque je navigue dans/api/values ​​ou/api/values ​​/ 5, le message XML ci-dessous s'affiche.

<Error>
    <Message>Authorization has been denied for this request.</Message>
</Error>

Puis-je avoir une aide s'il vous plait? Je suis nouvelle dans l'API Web ..__ Veuillez noter que je ne souhaite pas supprimer l'attribut Autoriser. Je voudrais accéder à la ressource après autorisation seulement. Je cherche donc ce qui ne va pas.

25
atp9

Dans ValuesController, il existe un attribut Authorize si vous le supprimez, il fonctionnera alors comme page d'accueil.

L'attribut Authorize empêche simplement un utilisateur anonyme d'accéder à ValuesController.

pour utiliser cet attribut, vous devez d'abord enregistrer un utilisateur, puis vous connecter pour obtenir le jeton de l'utilisateur. Vous pouvez ensuite utiliser le jeton pour vous autoriser et obtenir l'accès.

Dans cette page Individual-accounts-in-web-api est expliqué tout ce dont vous avez besoin 

55
Tarek Abo ELkheir

Cela se produit parce que vous avez un Authorize attribut sur votre ValuesController

[Authorize]
public class ValuesController : ApiController

Supprimez simplement [Authorize] et réessayez.

MODIFIER

Selon vos modifications: vous devez créer un nouvel utilisateur et vous connecter ou utiliser [AllowAnonymous] comme mentionné par @Marcus H.

15
Roman Marusyk

J'ai la réponse ici.

https://stackoverflow.com/a/29405794/8107314

Et il était très utile de corriger mon erreur mon erreur

Je viens de rencontrer le même problème et trouver la solution:

Vous devez enregistrer les éléments OAuth Token Generator et OAuth Token Consumer avant que WebAPI ne soit enregistré.

Cela a du sens si vous envisagez cela comme un pipeline, où Authentification/Autorisation doit précéder toute demande traitée par les contrôleurs.

TL; DR: changement

appBuilder.UseWebApi(config);

this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);

À

this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);

appBuilder.UseWebApi(config);

Par Cguedel en tête de 43% du total Ingénieur logiciel principal

Développeur de logiciels intéressé par tout ce qui est .NET, en particulier WPF SOreadytohelp

0
K C Frank