English
Français

Blog of Denis VOITURON

for a better .NET world

AspNetCore WebAPI - Authentification Google

Posted on 2019-08-09

De plus en plus de projets disposent de rubriques sécurisées par des identités Google, Twitter ou Microsoft. Par exemple, pour Google, vous devez créer un identifiant et préciser l’URL de retour. Puis vous devez activer le service Google Authentication et sécuriser vos méthodes via [Authorize]. Le premier appel d’une méthode sécurisée vous redirige automatiquement vers la page de Google.

Créer un ID Google

La première étape est de configurer Google API pour se créer un ID de projet, à utiliser dans notre application :

  1. Naviguez vers Integrating Google Sign-In into your web app et configurer un projet.
  2. Choisissez l’authentification OAuth, via un Web server.
  3. Ajoutez votre URL locale, dans la zone des URIs de redirection authorisées: https://localhost:5001/signin-google (le port 5001 correspond à la configuration par défaut de Visual Studio: voir ci-dessous).
  4. Conservez une copie du ClientID et du Client Secret généré.

Plus de détails, dans la documentation de Microsoft.

Une fois la configuration terminée, vous pouvez la consulter ou la modifier via la Google Console.

Google Authentication

Activer la sécurité des WebAPIs

Dans votre projet ASP.NET Core WebAPI, ajoutez les services Identity, Authentication et Google comme suit.

public void ConfigureServices(IServiceCollection services)
{
    services.AddIdentity<IdentityUser, IdentityRole>();
    services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = GoogleDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
            })
            .AddGoogle(options =>
            {
                options.ClientId = "[MyGoogleClientId]";
                options.ClientSecret = "[MyGoogleSecretKey]";
            });
    services.AddMvc();
}

Ensuite, activez l’authentification via UseAuthentication().

public void Configure(IApplicationBuilder app, 
                      IHostingEnvironment env)
{
    app.UseAuthentication();
    app.UseMvc();
}

Finalement, ajoutez l’attribut [Authorize()] aux API que vous souhaitez sécuriser. Et démarrez votre site web pour exécuter l’API sécurisée.

[HttpGet("{id}")]
[Authorize]
public ActionResult<string> Get(int id)
{
    return this.User.Identity.Name;
}

Une fois l’authentification approuvée par Google, vous pouvez gérer votre propre sécurité (rôles, durée de vie, …) via des jetons JWT, par exemple.

Démonstration

Langues

EnglishEnglish
FrenchFrançais

Suivez-moi

Articles récents