.net Core 6 Api Key Authentication

5 min read Jun 03, 2024
.net Core 6 Api Key Authentication

Authentification par clé API avec ASP.NET Core 6

L'authentification par clé API est un moyen simple et efficace de sécuriser vos API ASP.NET Core 6. Cette méthode permet de valider l'identité d'un client en vérifiant une clé API unique, fournie dans chaque requête.

Pourquoi utiliser l'authentification par clé API ?

L'authentification par clé API est particulièrement adaptée pour les scénarios suivants :

  • Applications non interactives : Les applications qui ne nécessitent pas d'authentification utilisateur traditionnelle, comme les applications web ou mobiles qui interagissent avec votre API.
  • Sécurité simplifiée : L'authentification par clé API est facile à mettre en œuvre et à gérer, car elle ne nécessite pas de gestion complexe des utilisateurs et des mots de passe.
  • Contrôle d'accès granulaire : Vous pouvez attribuer des clés API à différents clients avec des privilèges distincts, permettant un contrôle précis de l'accès aux ressources de votre API.

Mise en œuvre de l'authentification par clé API dans ASP.NET Core 6

Voici les étapes pour implémenter l'authentification par clé API dans votre application ASP.NET Core 6 :

  1. Créer un service d'authentification : Définissez une classe de service qui gère la validation de la clé API. Cette classe peut inclure une méthode AuthenticateAsync qui prend la clé API en entrée et renvoie une instance ClaimsPrincipal si la clé est valide.

  2. Configurer le middleware d'authentification : Ajoutez le middleware d'authentification à la configuration de votre application. Vous pouvez utiliser le middleware AddAuthentication et spécifier un schéma d'authentification personnalisé pour la clé API.

  3. Définir le schéma d'authentification : Dans le schéma d'authentification personnalisé, définissez le type d'authentification, le nom de l'en-tête de requête où la clé API est transmise et la logique de validation de la clé.

  4. Valider la clé API dans les contrôleurs : Dans vos contrôleurs d'API, vous pouvez utiliser l'attribut Authorize pour exiger l'authentification par clé API. Vous pouvez également accéder à l'utilisateur authentifié via la propriété User du contrôleur.

Exemple de code

// Service d'authentification
public class ApiKeyAuthenticationService : IAuthenticationService
{
    private readonly IConfiguration _configuration;

    public ApiKeyAuthenticationService(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public async Task AuthenticateAsync(HttpContext context, AuthenticationScheme scheme)
    {
        // Obtenir la clé API de l'en-tête de la requête
        var apiKey = context.Request.Headers["ApiKey"].FirstOrDefault();

        // Vérifier si la clé API est valide
        if (apiKey == _configuration["ApiKey"])
        {
            // Créer l'instance ClaimsPrincipal
            var claims = new List
            {
                new Claim(ClaimTypes.Name, "API Client")
            };
            var identity = new ClaimsIdentity(claims, scheme.Name);
            var principal = new ClaimsPrincipal(identity);

            return AuthenticateResult.Success(new AuthenticationTicket(principal, scheme.Name));
        }

        return AuthenticateResult.Fail("Clé API non valide.");
    }
}

// Configuration du middleware
public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = "ApiKey";
        options.DefaultChallengeScheme = "ApiKey";
    })
    .AddScheme("ApiKey", options => { });
}

// Contrôleur d'API
[Authorize]
public class MyController : ControllerBase
{
    // Action du contrôleur sécurisée par clé API
    [HttpGet]
    public IActionResult GetSecretData()
    {
        return Ok("Données secrètes");
    }
}

Conclusion

L'authentification par clé API est un mécanisme simple et efficace pour sécuriser vos API ASP.NET Core 6. En suivant ces étapes, vous pouvez facilement mettre en œuvre ce type d'authentification et garantir que seules les applications autorisées peuvent accéder à vos ressources d'API. N'oubliez pas de stocker vos clés API de manière sécurisée et de les renouveler régulièrement.

Featured Posts