IdentityServer4 Manage List of Users

C'est toujours la même question car je n'ai pas trouvé de réponse, comment manager mes utilisateurs avec IdentityServer4 ? Quelle est la frontière entre IS4 et .NET Identity. Qui ressemble, pour les anciens, à l'ASP.NET DB.

ASP.NET Core Identity - Authentification

Je suis surpris que l'on nous laisse entre les mains des créateurs de l'IdnetityServer4 avec une version payante de l'AdminUI (version à 500 L, oui c'est de l'english, pour la moins chère) qui en plus ne correspond pas à mon besoin car je souhaite simplement une DataView ou une GridView sur la tables de mes utilisateurs pour manager mes Users et leurs rôles au sein de mon application Web ASP.NET Core.

Je n'ai pas besoin de tout le tintouin configuration des clients c'est déjà fait, Policy, Claims, ... bref je vais la développer cette Interface de Gestion des Utilisateurs. Mais avant de définir les specs de mon projet, je suis prudent et je regarde plus avant ce que je peux faire avec IdentityServer4 ...

Role Based Security in an ASP.NET Core Application
DotNetCurry ! Ils ont de l'humour ces gars là, vous ne trouvez pas ! Avec ce nom vous pensez qu'ils sont indiens, certainement.

AspNetCore Identity - Tables

Pour enregistrer un utilisateur, il faut commencer par créer des Rôles afin d'enregistrer l'utilisateur avec son Rôle.

AspNetCore Identity - Roles cretation

Ce qui se traduit dans la base de données par le contenu de la Table AspNetRoles suivant :

AspNetCore Identity - AspNetRoles

Et dans la Table AspNetUser Roles par :

AspNetCore Identity - AspNetRoles

On a fait le tour de la gestion des Rôles mais il faudrait que l'on puisse ajouter un User dans un Rôle ou retirer un User d'un Rôle.

Et pour continuer, voici l'excellent site :

YOGIHOSTING » ASP.NET CORE » HOW TO WORK WIT...
Finalement j'ai eu du mal à trouver mais là il y a tout, tout ce que je veux pour réaliser mon application idéale de Gestion des Utilisateurs de mon application Web.

https://www.yogihosting.com/aspnet-core-identity-create-read-update-delete-users/

Merci à cette équipe et oui il s'agit bien de toute une équipe ...

ABOUT THE AUTHOR
This article has been written by the Technical Staff of YogiHosting. Check out other articles on "ASP.NET Core, jQuery, EF Core, SEO, jQuery, HTML" and more.


Maintenant, il ne reste plus qu'à intégrer tout cela dans mon projet StsIdentityServer4.

Il y a un bel exemple de poursuite du développement sur la base d'un IdentitytServer4 c'est ici :

GitHub - BenjaminAbt / Samples.AspNetCore-IdentityServer4

Et sinon, nous avons maintenant notre propre IdentityServer4 avec Gestion des Utilisateurs, n'hésitez pas à nous contacter. Nous mettrons surement prochainement en ligne les codes sources si vous nous en faites la demande (gentiment ;-).

IdentityServer4 How To Manage Users and Roles and Community

Evidemment, pour répondre à ce besoin, il y a le site payant avec leur AdminUI mais je suis déçu, je n'ai passé que très peu de temps à m'enregistrer et a lire la documentation mais surtout c'est une "application de poste". Je souhaitais une application web de management de mes utilisateurs.

Identity Server - ASP.NET Core solution
IdentityServer4 - Site Commercial - ASP.NET Core

Voici le site de l'AdminUI :

IdentityServer4 - AdminUI
IdentityServer4 - AdminUI ~ 500 $

J'ai installé les templates, dedans il y en a un qui s'appelle is4admin mais si vous croyez qu'il y a la moindre UI de Gestion des utilisateurs et des Roles là dedans, je crois que c'est raté !

https://github.com/IdentityServer/IdentityServer4.Templates

Si j'installe tout et si je fais :

http://localhost:5000/admin

Il ne se passe rien ! Pas d'Admin !

IdentityServer4 - ASP.NET Core solution
is4aspid - IdentityServer4 - ASP.NET Core

Les sources de ce serveur d'authentifications sont Ici :

https://github.com/IdentityServer

Une fois entré avec The default users are alice/bob, password: Pass123$

On ne peut plus rien faire, tout le site ne consiste qu'à gérer les configurations des sources de IdentityServer4, donner quelques bases sur le configuration de votre client qu'il soit MVC, API, Angular ou autre et puis c'est tout.

IdentityServer4 - ASP.NET Core solution
Login into is4aspid project an ASP.NET Core Solution

J'essaye de titiller les différents contrôleurs : Grants :

IdentityServer4 - ASP.NET Core solution
IdentityServer4 - ASP.NET Core - Samples for Grants

Aucun exemple pour découvrir comment attribuer des Grants à Alice Smith. Grrr. 
Franchement avec tous ces trucs UI is4ui et autres, je pensais trouver mieux, il n'y a pas même un formulaire de Register.

Tout le reste consiste à nous montrer que leur Server d'Identité fonctionne mais de façon pratique rien n'est codé du côté UI. Il faut aller acheter sur le site :


Dont la documentation est fournie Ici :


Alors si je vais voir ailleurs avec les mots clefs : AdminUI for IdentityServer4 ...
un peu plus loin il y a :


Mais le gars Skoruba,, il plombe son projet avec tout un tas de trucs c'est très compliqués ça va surement devenir payant.

Il y a lui, Asad Sahi :

https://github.com/asadsahi/AspNetCoreSpa

Il y réussi a installer un IdentityServer sur une machine mais bon ... c'est tout Grrrr.

Ou encore cette page répertoire des projets OpenSource

https://awesomeopensource.com/projects/identityserver4
C'est une sorte de répertoire des projets Open Source : "The Top 28 Identityserver4 Open Source Projects" j'y retrouve les projets que je connais déjà.

Skoruba/IdentityServer4.Admin
Trop compliqué ! Et puis il met son nom partout Skoruba par ci Skoruba par là, ça ne fait pas très pro en tous les cas il y a du code plein de code.

Si j'avais un tel projet à créer et à développer je l'appellerai IdentityServer4.AdminUI

Franchement quand je regarde :

https://dotnetnew.azurewebsites.net/template/IdentityServer4.Templates/IdentityServer4.Admin

J'ai l'impression que l'AdminUI est dedans ....

J'ai créé un nouveau projet à partir de la commande suivante :

PS>dotnet new is4admin

Et j'ai créé ainsi un projet un peu différent est ce la réinstalle du Template ... mystère.

J'ai deux bases de données :

{
  "ConnectionStrings": {
    "Users": "Data Source=AspIdUsers.db;",
    "Configuration": "Data Source=IdentityServer.db;"
  }
}

Donc maintenant, j'en suis sûr je me suis trompé de template certainement en instanciant le premier exemplaire.

IdentityServer4 AdminUI

J'ai enfin accès en instanciant un projet avec la commande. Je me lance dans une exploration rapide.
Exécution de l'application :

IdentityServer4 AdminUI - ASP.NET Core
IdentityServer4 AdminUI - ASP.NET Core

Alors où vais-je me retrouver quand j'aurais cliqué sur ce lien ? C'est une DLL intégrée certainement avec de l'obfuscationdans. Le site principal dit :

The community edition is intended for testing IdentityServer integration scenarios and is limited to localhost:5000, SQLite, 10 users, and 2 clients. The community edition is not suitable for production.

See identityserver.com for more information about AdminUI or to request a trial license.


Ok Start !

IdentityServer4 AdminUI découverte
IdentityServer4 AdminUI - Découverte

Je me retrouve enfin dans l'Administration du Serveur IdentityServer4, ce n'est pas trop tôt.

IdentityServer4 AdminUI - Découverte enfin l'UI

Je peux alors ajouter un utilisateur :

IdentityServer4 AdminUI - Ajouterun Utilisateur
IdentityServer4 AdminUI - Ajouter un Utilisateur

Je passe par l'onglet Claim Types un truc intéressant une liste de Claims je choisi birthdate je peux la rendre obligatoire et éditable par l'utilisateur par contre au moment de sauver :

IdentityServer4 AdminUI - Claim Types

Grrrr ça paraissait simple j'oblige les nouveaux utilisateur à entrer leur date de naissance et je la rends éditable ... mais non ... je verrai ça plus tard.

Du coup je me dis que je devais supprimer tous les utilisateur pour modifier la structure de la base mais c'est pas ça GRRRR.

Je clique par hasard sur Active et je restore mon utilisateur.

IdentityServer4 AdminUI - Restore un utilisateur

Voilà un tour super rapide de l'interface, c'est bien ce que j'attends de l'AdminUI d'IdentityServer4 mais c'est dommage parce que je pensais bien que ce boulot était fait et non payant.

En plus sur ce genre de produit, c'est toujours la même chose, ils déclinent dans toutes les langues sur toutes les plateformes, dans tous les langages de programmation et cela devient bien trop compliqué.

Pour aller plus loin, encore un peu de lecture :

Visitez notre implémentation de l'IdentityServer4

Pour visiter en ligne, notre implémentation, voici l'IdentityServer4 de SoDevLog :

Sur ce formulaire d'enregistrement de l'utilisateur vous pouvez constater qu'il y a des champ supplémentaire que nous désirons recueillir de la part de nos utilisateurs :
  • Date de naissance
  • Société
  • Addresse
Suivant la façon dont l'utilisateur rempli ces champs, nous pouvons immédiatement en déduire ses intentions.

Nous cherchons à acquérir de vrais clients motivés qui doivent passer un peu de temps à remplir correctement ces champs.

Découvrons le projet Open Source Myrtille avec Visual Studio 2019

Il s'agit d'une application Web permettant de vous connecter aux ordinateurs à distance. Un RDP (Remote Desktop Protocol) en application Web.

Voici l'adresse du Github :

GitHub - cedrozor/myrtille

On nous dit qu'il faut Visual Studio 2017. Alors peut-on ouvrir la solution avec Visual Studio 2019 Community... ?

Je clone le répertoire sur mon disque dur grâce à GitHubDesktopSetup que je viens d'installer :

Github Clone myrtille

J'ouvre mon Visual Studio 2019 Community et j'ouvre la solution :

..\Visual Studio 2019\GithubClone\myrtille\Myrtille.sln

C'est toujours un moment délicat, soit tout va bien se passer et on va pouvoir continuer le développement, browser les sources regarder les modèles de données, soit l'ouverture du projet crash et il va falloir remédier avant d'imaginer utiliser les codes sources.

Ici, avec myrtille, l'installeur n'est pas compatible avec Community mais ça on le sait :

Installeur de myrtille incompatible avec VS Community

Pour le reste tout à l'air de se passer correctement.

Installeur de myrtille incompatible avec VS Community

Le chargement du projet myrtille me demande d'installer "Desktop development with C++".


Allons y ! C'est long, l'installation de la totalité de la chaîne et des outils de développement en C++.

Visual Studio 2019 Community se ferme automatiquement. Le processus d'installation sur ma machine actuelle prend environ 7 à 8 minutes. Visual se réouvre automatiquement avec un message "The installation has completed".

Me voilà avec un projet de développement myrtille :

Myrtille sous Visual Studio 2019 Community
Myrtille sous Visual Studio 2019 Community

Tout ceci m'a l'air très prometteur pour faire une incursion dans les technologies du projet. Si j'étais bourin, je ferais bouton droit sur la solution "Rebuild solution" mais je n'irais pas loin.

Essayons de voir ce qu'il manque en parcourant les références des différents projets. Le framework de myrtille c'est le .NET Framework 4.5. Je lance un coup de DotNetVersion sur ma machine de développement :

DoNet Version

Oups ... sur ma machine de DEV actuelle, je passe du 4.0.0.0 au 4.7.03062 ça n'est pas bon pour myrtille. La question est comment passer de .NET Framework 4.5 au .NET Framework 4.7 d'autant que je travaille actuellement sur cette machine avec .NET Core 3.0 ... 

Pour les amateurs de salmigondis 


En gros, il me faudrait installer une nouvelle machine (ancienne plutôt car 4.5 est un framework qui n'est plus supporté par le .NET Standard 2.1 cf. le tableau). 


La migration de .NET Framework 4.5 vers .NET Core c'est peut être la solution mais dans ce cas; il y a du travail. Attention la dette technique augmente.