AspNetCore WebAPI - Authentification Google
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 :
- Naviguez vers Integrating Google Sign-In into your web app et configurer un projet.
- Choisissez l’authentification OAuth, via un Web server.
- 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). - 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.
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.