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 (8037 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 : 6640
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 : 4177
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 : 4115
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 : 4354
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 : 4002
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 : 3762
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 : 4108
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