Voir le flux RSS

Blog de Hinault Romaric (.NET Core, ASP.NET Core, Azure, DevOps)

[Actualité] IdentityServer4 : prise en charge du provider tiers Github pour l'authentification

Noter ce billet
par , 30/04/2020 à 20h56 (299 Affichages)
IdentityServer est une solution open source .NET de gestion d’identité et de contrôle d’accès. Il repose sur les protocoles OpenID Connect et OAuth 2.0.

IdentityServer peut être utilisé par les entreprises pour mettre en place une solution pour :

  • la protection de leurs ressources ;
  • l’authentification des utilisateurs via une base de données ou des fournisseurs externes d’identité (Microsoft, Google, Facebook, etc.) ;
  • la gestion des sessions et la fédération (single sign-on) ;
  • la génération des jetons pour les clients ;
  • la validation des jetons et bien plus.


Ce billet est le septième que j’écris sur le sujet. Les billets précédents ont porté sur les points suivants :

Mise en place d’un STS avec IdentityServer4 pour sécuriser ses applications .NET

Sécurisation d’une Web API ASP.NET Core avec le STS IdentityServer4

IdentityServer4 : création et configuration du Client pour accéder à une Web API ASP.NET Core sécurisée

IdentityServer4 : Authentification d’un utilisateur avec OpenID Connect

IdentityServer4 : création et configuration d’un client utilisant OpenID Connect

IdentityServer4 : création et configuration d’un client utilisant OpenID Connect


IdentityServer4 : Autoriser l’application MVC à accéder à l’API, via le jeton obtenu du STS

IdentityServer4 : prise en charge du provider tiers Microsoft pour l'authentification

Dans le billet précédent, nous avons vu comment mettre en place l’authentification en utilisant Microsoft comme fournisseur d’authentification. Dans ce billet, nous verrons comment faire la même chose en utilisant cette fois GitHub comme fournisseur d’authentification.

IdentityServer offre la prise en charge en charge de l’authentification en utilisant un provider externe. La mise en place de cela est assez simple dans la mesure où ASP.NET Core offre en natif la prise en charge de l’authentification avec un compte Google, Facebook, Twitter et Microsoft.

Enregistrement de l’application

La première étape dans le processus est l’enregistrement de votre application. Cela se passe sur cette page : https://github.com/settings/developers.

Nom : img27.PNG
Affichages : 801
Taille : 8,9 Ko

Dans la fenêtre qui va s’afficher, vous devez renseigner le nom de votre application, l’URL de la page d’accueil de l’application IdentityServer (https://localhost:5001, pour notre cas) et l’URL de CallBack. Il s’agit de l’URL de l’application IdentityServer suivie de signin-github : https://localhost:5001/signin-github. Il s’agit du « callback » par défaut pour l’authentification en utilisant le provider GitHub. Vous pouvez renseigner toute autre valeur, à condition que lors de la configuration de l’authentification GitHub dans votre code, vous renseigniez la même valeur pour l’option CallBackPath.

La définition de l’URL de CallBack permet au middleware d’authentification du provider externe d’intercepter le retour après s’être authentifié. Ainsi, il pourra effectuer le traitement nécessaire pour générer les revendications (Claims) qu’il faut.

Nom : img28.PNG
Affichages : 881
Taille : 27,7 Ko

Après avoir créé l’application, vous allez obtenir un Client ID et un Client Secret. Copiez ces informations, vous en aurez besoin plus tard.

Configuration de l’authentification GitHub

Revenez dans votre application IdentityServer. GitHub n’est pas supporté par défaut comme fournisseur d’authentification. Vous devez donc installer le package AspNET.Security.OAuth.GitHub :

Nom : img29.PNG
Affichages : 775
Taille : 9,3 Ko

Une fois le package installé, ouvrez le fichier Startup.cs. Vous devez modifier la méthode ConfigureServices pour ajouter les services et configurer le provider pour l’authentification GitHub :

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
services.AddAuthentication()
                .AddGitHub("GitHub", githubtOptions =>
                {
                    githubtOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                    githubtOptions.ClientId = "35a2xxxxxxxxxxxxa87da";
                    githubtOptions.ClientSecret = "de0998xxxxxxxxxxxxxxxxx761bb3";
                    githubtOptions.CallbackPath = "/signin_github";
                });

Vous devez renseigner le Client ID et le Client Secret de l’application GitHub respectivement dans les champs ClientId, et ClientSecret.

Le SignInScheme permet de spécifier le nom du cookie qui sera généré et permettra de sauvegarder temporairement les informations provenant du fournisseur d’authentification externe. IdentityServer offre la constante IdentityServerConstants.ExternalCookieAuthenticationScheme pour permettre de définir ce nom.

Enregistrez les modifications. Exécutez votre application. Dans la page de connexion, vous aurez désormais un bouton pour GitHub :

Nom : img29-1.PNG
Affichages : 773
Taille : 15,2 Ko

Lorsque vous cliquez dessus, vous êtes redirigé vers la page de connexion de GitHub. Une fois connecté avec votre compte GitHub, une page s’affiche pour demander votre autorisation à partager vos informations avec l’application.

Nom : img30.PNG
Affichages : 757
Taille : 31,2 Ko

Une fois votre consentement donné, vous êtes redirigé vers la page à laquelle vous vouliez accéder initialement.

Nom : img31.PNG
Affichages : 759
Taille : 13,6 Ko

Dans le prochain billet sur IdentityServer, nous verrons comment utiliser EntityFramework Core pour la persistance des données.

Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog Viadeo Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog Twitter Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog Google Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog Facebook Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog Digg Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog Delicious Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog MySpace Envoyer le billet « IdentityServer4 : prise en charge du provider tiers Github pour l'authentification » dans le blog Yahoo

Commentaires