L'API WEB - Autoriser au contrôleur ou de l'action (pas d'authentification)
J'ai déjà une API qui n'a Pas d'Authentification. C'est un public d'API Web qui plusieurs clients utilisent en faisant de simples demandes.
Maintenant, il est nécessaire d'autoriser l'accès à une certaine méthode.
Est-il de toute façon pour ce faire, en gardant le reste des contrôleurs et des méthodes respectives "ouvrir" pour les clients qui utilisent déjà cette API Web?
Comment puis-je déterminer si la demande a les permissions pour accéder à cette "protégés" méthode?
Mettre le
Et où puis-je définir qui a accès? À la demande du client doit changer aussi? L'habitude de la demande de prendre un gros gain de performance puisqu'il a pour valider l'accès à chaque fois qu'une demande est faite pour que la méthode spécifique?
[Authorize]
sur l'action spécifique si c'est une partie de contrôleur qui a déjà anonyme actions. Si c'est la seule action sur le contrôleur, vous pouvez le mettre sur le contrôleur. Comment avez-vous été la planification sur l'autorisation de demandes pour cette action?Et où puis-je définir qui a accès? À la demande du client doit changer aussi? L'habitude de la demande de prendre un gros gain de performance puisqu'il a pour valider l'accès à chaque fois qu'une demande est faite pour que la méthode spécifique?
OriginalL'auteur JCruz | 2016-08-03
Vous devez vous connecter pour publier un commentaire.
Ce que vous devez faire est d'ajouter une
[Authorize]
attribut pour les méthodes que vous voulez protéger, éventuellement, en utilisant la surcharge qui accepte un ou plusieurs noms de rôle que l'utilisateur appelant doit être dans.Ensuite ce que vous aurez à mettre en œuvre est une façon de s'assurer que les données d'authentification de l'appelant est transformé en un objet Principal. Réglage de la Principale est généralement quelque chose que vous ne le faites pas vous-même, mais plutôt le cadre le faire pour vous.
Si vous ne souhaitez fournir votre propre interface, vous pouvez à l'aide d'un filtre d'authentification mise en œuvre de la
System.Web.Http.Filters.IAuthenticationFilter
interface.Donc, ce que vous obtiendrez est-ce:
Et de mettre en œuvre l'
MyAuthentication
attribut. Ci-dessous est un exemple, la chose importante est que vous utilisez le contexte de réception de la demande et à la fin de réglage de lacontext.Principal
propriété avec un nouveau directeurJ'espère que cela vous aide à rester sur la bonne voie. Pour plus d'informations, consultez ce post:
http://www.asp.net/web-api/overview/security/authentication-filters
OriginalL'auteur Robba
Vous pouvez utiliser
[Authorize]
attribut particulier de la méthode de l'API ainsi qu'au niveau du contrôleur. Dans le cas où vous mettez le[Authorize]
attribut au niveau du contrôleur, alors vous pouvez utiliser[AllowAnonymous]
attribut pour ceux méthode de l'API qui vous souhaitez l'accès sans authentification.OriginalL'auteur Rahul
Par défaut, l'autorisation est désactivé au niveau global de l'application. Vous pouvez forcer votre contrôleur à seulement autorisé les demandes par l'ajout de l'action du filtre [Autoriser].
Vous pouvez également forcer seules certaines méthodes autorisée:
Ou tout simplement désactiver l'autorisation sur certaines méthodes à l'intérieur d'un contrôleur qui nécessite une autorisation:
Vous pouvez également définir qui est autorisé à accéder à votre méthode en utilisant:
Ou par les Règles en utilisant:
Ou même de créer de plus en plus complexe Autoriser attribut comme dans cette réponse (en Fonction des Demandes): L'autorisation de l'Attribut par les Revendications
OriginalL'auteur Rafael A. M. S.
Nous l'avons résolu en utilisant [AllowAnonymous] sur la méthode qui nous n'avons pas voulu être Authentifié mais Authorizated, substitution de l'Autorisation.
OriginalL'auteur Ruben Lopez