59 votes

Autorisation d'API Web ASP.NET avec AuthorizeAttribute

À l'aide de la nouvelle ASP.NET l'API Web de la bêta. Je ne peux pas sembler obtenir la méthode d'authentification des utilisateurs, du travail. Où l'approche proposée semble être, pour ajouter l' [Authorize] filtre pour les contrôleurs d'API. Par exemple:

[Authorize] 
public IEnumerable<Item> Get()
{
    return itemsService.GetItems();
}

Cela ne fonctionne pas comme prévu. Lors de la demande de la ressource, vous redirigé vers un formulaire de connexion. Ce qui n'est pas très adapté pour un séjour Reposant webapi.

Comment dois-je procéder? Il travaillera différemment dans les futures versions?, ou devrais-je revenir à la mise en œuvre de ma propre action du filtre?

94voto

AlexGad Points 2958

Vérifiez bien que vous utilisez les System.Web.Http.AuthorizeAttribute et non les System.Web.Mvc.AuthorizeAttribute . Cela m'a mordu avant. Je sais que l’équipe WebAPI essaie de tout rassembler pour que les utilisateurs de MVC soient au courant, mais je pense que certaines choses sont inutilement déroutantes.

4voto

Paul Tyng Points 5203

Définissez votre mode d'authentification à Aucun:

<authentication mode="None" />

Aucun ne Spécifie pas d'authentification. Votre demande s'attend à ce que les utilisateurs anonymes ou l'application dispose de sa propre authentification.

http://msdn.microsoft.com/en-us/library/532aee0e.aspx

Bien sûr, alors vous devez fournir quelque sorte de l'authentification via les en-têtes ou des jetons ou quelque chose. Vous pouvez aussi spécifier Windows et utiliser le construit en auth via les en-têtes.

Si ce site est fait d'un mélange entre l'API et les pages qui ne doivent les Formes de réglage, puis vous aurez besoin d'écrire votre propre manipulation.

Tous les attribut n'est le retour d'un HttpUnauthorizedResult exemple, la redirection se fait à l'extérieur de l'attribut, donc ce n'est pas le problème, c'est votre fournisseur d'authentification.

3voto

Malkov Points 455

Enfin, j'ai trouvé une solution sur: ASP.NET MVC 4 WebAPI authorisation

Cet article montre comment résoudre ce problème.

2voto

adrin Points 1340

Vous allez être redirigé vers la page de connexion, car les formulaires d'authentification module effectue cette opération automatiquement. Pour se débarrasser de ce comportement de désactiver l'authentification par formulaires comme suggéré par Paul. Si vous souhaitez utiliser plus de REPOS approche amicale, vous devriez envisager la mise en œuvre de HTTP autorisation de soutien. Jetez un oeil à ce post de blog http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-membership-provider/

0voto

Varun Chatterji Points 2114

Consultez également ma réponse à: Comment sécuriser une API Web ASP.NET

J'ai créé un package NuGet que vous pouvez utiliser par commodité.

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