Bonjour,
J'essaie de mettre en place une infrastructure d'authentification IdentityServer3.
Je me suis essentiellement basé sur la doc officielle.
Avec beaucoup de mal, j'ai réussi pour l'instant à avoir les éléments suivants qui fonctionnent :
Une appli IdentityServer3
Application web MVC ASP.NET (.NET Framework)
Packages :
- Microsoft.Owin.Host.Systemweb
- IdentityServer3
Comme proposé dans le tutoriel, j'ai notamment une classe Users.cs contenant une méthode Get() qui génère une List<InMemoryUser> à des fins de démonstration :
Cette liste est récupérée par le Startup.cs lors de la définition du Factory dans les IdentityServerOptions :
Code : 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
22
23 public static class Users { public static List<InMemoryUser> Get() { return new List<InMemoryUser> { new InMemoryUser { Username="bob" , Password="secret", Subject="1", Claims = new[] { new Claim(Constants.ClaimTypes.GivenName, "TARTAMPION"), new Claim(Constants.ClaimTypes.Role,"Gestionnaire"), new Claim(Constants.ClaimTypes.Role,"Chef de service"), new Claim(Constants.ClaimTypes.Role,"Utilisateur de base") } } }; } }
Une appli cliente
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var factory = new IdentityServerServiceFactory(); factory.UseInMemoryUsers(Users.Get());
Application web ASP.NET (.NET Framework)
Packages :
- Microsoft.Owin
- Microsoft.Owin.Security.Cookies
- Microsoft.Owin.Security.OpenIdConnect
- Microsoft.Owin.Host.SystemWeb
Le Startup.cs de mon appli cliente est le suivant :
Avec cette mini-infrastructure, j'arrive à protéger une action de contrôleur avec un [Authorize], voire un [Authorize(Role="xxx")].
Code : 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
22
23
24
25
26
27 namespace EssaiAppliCliente { public class Startup { public void Configuration(IAppBuilder app) { app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = "Cookies" }); var options = new OpenIdConnectAuthenticationOptions { Authority = "https://localhost:44365/identityServer", // Adresse du IdentityServer ClientId = "EssaiAppliCliente", // Identifiant de l'application cliente lorsqu'elle se présente auprès de l'IdentityServer RedirectUri = "https://localhost:44339/", // Adresse de redirection de l'appli cliente ResponseType = "id_token", SignInAsAuthenticationType = "Cookies", Scope="openid roles" }; app.UseOpenIdConnectAuthentication(options); app.UseResourceAuthorization(new AuthorizationManager()); } } }
Je souhaite maintenant passer à l'étape suivante : remplacer les InMemoryUser par des vrais utilisateurs issus de ma base de données SQL Server.
Malheureusement, je dois avouer que je suis un peu perdu. J'ai pas mal cherché, mais je ne trouve pas de documentation claire et simple, pas à pas, pour y parvenir.
Il semble qu'il soit nécessaire d'ajouter Asp.Net Identity, et de connecter tout ça je ne sais trop comment...
Quelqu'un a-t'il déjà fait ça avec succès ? Existe-t'il quelque part une documentation accessible ?
Je continue mes recherches de mon côté, je mettrai à jour ce topic si j'y arrive.
Merci
Partager