IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

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

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

Noter ce billet
par , 05/07/2019 à 16h26 (7213 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 : Autoriser l’application MVC à accéder à l’API, via le jeton obtenu du STS

Dans la section précédente, nous avons vu comment mettre en place l’authentification par formulaire en utilisant OpenID Connect. Maintenant, nous voulons offrir l’opportunité à l’utilisateur de se connecter en utilisant son compte Microsoft.

IdentityServer offre la prise en charge de l’authentification en utilisant un provider externe. La mise en place de cela est assez simple dans la mesure ou 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

Avant de configurer l’authentification Microsoft pour notre application dans IdentityServer, nous devons d’abord enregistrer notre application dans le portail développeur de Microsoft.

Vous devez vous rendre sur la page suivante en utilisant votre compte Microsoft : https://apps.dev.microsoft.com/

Ensuite, créer une nouvelle application :

Nom : img20.PNG
Affichages : 4946
Taille : 18,7 Ko

Une fois l’application créée, vous serez redirigé vers une nouvelle page vous permettant de générer un mot de passe. Cliquez sur le bouton « Générer un nouveau mot de passe ». Copiez le mot de passe qui sera généré et sauvegardez-le. C’est l’unique fois que vous le verrez en clair dans ce portail. Vous en aurez besoin plus tard pour la configuration de votre application :

Nom : img21.PNG
Affichages : 3780
Taille : 19,8 Ko


Maintenant, vous devez ajouter une nouvelle plateforme à votre application. Cliquez sur Ajouter une plateforme, puis sélectionnez Web :

Nom : img22.PNG
Affichages : 3750
Taille : 20,0 Ko

Ensuite vous devez saisir l’URL de redirection. Il s’agit de l’URL de l’application IdentityServer suivie de signin-microsoft : https://localhost:5001/signin-microsoft. Il s’agit du « callback » par défaut pour l’authentification en utilisant le provider Microsoft.
Vous devez également saisir l’url de déconnexion qui sera au format suivant : https://localhost:5001/signout-callback-microsoft.

Définissez les autorisations et les informations du profil utilisateur auxquelles l’application va demander les accès, puis enregistrez :


Nom : img23.PNG
Affichages : 3952
Taille : 33,4 Ko


Revenez dans votre application IdentityServer et ouvrez le fichier Startup.cs. Vous devez modifier la méthode ConfigureServices pour ajouter les services et configurer le provider pour l’authentification Microsoft :

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 services.AddAuthentication().AddMicrosoftAccount("Microsoft", microsoftOptions =>
            {
                microsoftOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                microsoftOptions.ClientId = "e62ce1d2-6cfe-4910-bd20-c6fed251d97e";
                microsoftOptions.ClientSecret = "ogldbTxxxxxxxxxxx";
            });

Vous devez renseigner l’ID de votre application créé sur le portail Microsoft dans le champ ClientId, puis le mot de passe dans le champ 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.


Le code complet de cette méthode est le suivant.

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
 
            //configure identity server with in-memory stores, keys, clients and resources
            services.AddIdentityServer()
                   .AddDeveloperSigningCredential()
                   .AddInMemoryIdentityResources(Config.GetIdentityResources())
                    .AddInMemoryApiResources(Config.GetApiResources())
                   .AddInMemoryClients(Config.GetClients())
                   .AddTestUsers(Config.GetUsers());
 
            services.AddAuthentication().AddMicrosoftAccount("Microsoft", microsoftOptions =>
            {
                microsoftOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                microsoftOptions.ClientId = "e62ce1d2-6cfe-4910-bd20-c6fed251d97e";
                microsoftOptions.ClientSecret = "ogldbTxxxxxxxxxxx";
            });
 
 
        }

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

Nom : img24.PNG
Affichages : 3653
Taille : 15,7 Ko


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

Nom : img25.PNG
Affichages : 3459
Taille : 30,7 Ko

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

Nom : img26.PNG
Affichages : 3729
Taille : 13,7 Ko

L'utilisation d'un provider tiers avec IdentityServer et ASP.NET Core s’avère relativement simple. Dans le prochain billet, nous verrons comment utiliser GitHub comme provider externe.

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

Mis à jour 22/07/2020 à 19h57 par Hinault Romaric

Catégories
DotNET , ASP.NET , .NET Core , ASP.NET Core

Commentaires