Comment puis-je même commencer à coder l’authentification à l’aide de l’API Web ASP.NET? J’ai lu certaines méthodes d’authentification RESTful, telles que l’utilisation de jetons dans l’en-tête.
Existe-t-il des exemples de projets utilisant cette méthode?
Des questions:
[Authorize]
pour lire le jeton? Je pense que les jetons seraient un bon moyen de continuer. L’authentification par formulaire est basée sur les cookies pour le Web. Cependant, ce n’est pas la situation la plus courante pour tous les clients autres que les navigateurs.
Ce que je suggère, c’est de créer un AuthorizationFilterAtsortingbute personnalisé et de remplacer la méthode OnAuthorization. Dans cette méthode, vous pouvez vérifier l’existence d’un jeton que vous avez envoyé au client après avoir fourni des informations d’identification valides. Vous pouvez utiliser cet atsortingbut sur n’importe quelle méthode ou contrôleur que vous souhaitez valider. Voici un exemple que vous pourriez citer
public class AuthorizeTokenAtsortingbute : AuthorizationFilterAtsortingbute { public override void OnAuthorization(HttpActionContext actionContext) { if (actionContext != null) { if (!AuthorizeRequest(actionContext.ControllerContext.Request)) { actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized) { RequestMessage = actionContext.ControllerContext.Request }; } return; } } private bool AuthorizeRequest(System.Net.Http.HttpRequestMessage request) { bool authorized = false; if (request.Headers.Contains(Constants.TOKEN_HEADER)) { var tokenValue = request.Headers.GetValues("TOKEN_HEADER"); if (tokenValue.Count() == 1) { var value = tokenValue.FirstOrDefault(); //Token validation logic here //set authorized variable accordingly } } return authorized; } }
TOKEN_HEADER est simplement une chaîne représentant un en-tête HTTP que le client doit renvoyer pour les demandes authentifiées.
Alors passons à travers
Aussi, vérifiez ce post par John Petersen. Rendre votre API Web ASP.NET sécurisée
Il existe de nombreuses façons d’authentifier les utilisateurs pour un service REST. L’utilisation de jetons est possible, mais l’utilisation de l’ authentification de base est encore plus simple et standard.
Ne confondez pas l’ autorisation avec l’ authentification . L’atsortingbut [Authorize] concerne uniquement l’autorisation, mais seulement après qu’un utilisateur a été authentifié à l’aide d’un autre mécanisme. L’autorisation est complètement inutile sans authentification préalable.
La meilleure ressource à vérifier est Dominick Baier, expert en la matière.
J’utilise une approche très simple:
le service avec cette approche utilisant la nouvelle API web ASP.NET MVC peut servir quel que soit le type de client: browser / javascript et native (desktop ou mobile) etc.
Vous pouvez utiliser ActionFilterAtsortingbute et remplacer la méthode OnActionExecuting. Plus tard, enregistrez ce filtre dans global.cs pour appliquer ce filtre à toutes les actions comme celle-ci dans la méthode Application Start
var config = GlobalConfiguration.Configuration; config.Filters.Add (new CustomAuthAtsortingbute ());
{espace de noms Customss {Classe publique CustomAuthAtsortingbute: ActionFilterAtsortingbute
{ public override void OnActionExecuting(HttpActionContext actionContext) { // To inforce HTTPS if desired , else comment out the code if (!Ssortingng.Equals(actionContext.Request.RequestUri.Scheme, "https", SsortingngComparison.OrdinalIgnoreCase)) { actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest) { Content = new SsortingngContent("HTTPS Required") }; return; } // get toekn from the header var userToken = actionContext.Request.Headers.GetValues("UserToken"); // Customer Logic to check the validity of the token. // U can have some DB logic to check , custom STS behind or some loca cache used to compare the values } }
}}