Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[.NET] Présentation des "Client Application Services"

Implémenter un système d'authentification et d'autorisations, dans une application Windows/WPF, n'a rien de bien compliqué mais nécessite, mine de rien, du travail supplémentaire.

Depuis ASP.NET 2.0, toute cette architecture existe de façon "pré-configurée" pour les appliations Web: vous crééez une base de données utilisée par ASP.NET pour gérer les utilisateurs et vous disposez d'une interface Web pour créer des utilisateurs, des rôles, ajouter des utilisateurs à ces rôles, etc....

Il est regrétable de voir que ce mécanisme n'existe que pour les applications Web et non pas pour les applications Windows. Enfin, jusqu'à l'arriver du Framework .NET 3.5 et d'une fonctionnalité dont on a très peu entendu parlé: les "Client Application Services".

Ces services permettent aux application Windows d'accéder facilement aux services de login, de profile et de rôles disponibles avec ASP.NET. Autrement dit, ces services vous permettent d'authentifier vos utilisateurs et de récupérer leurs informations (rôles, etc...) depuis un serveur Web.

Comment ca marche ? Tout simplement grâce à des services (d'authentification et d'autorisation) AJAX exposés par une application Web !

Pour que cela soit plus simple, nous allons voir ensemble les différentes étapes pour mettre en place un tel système.

 

Tout d'abord, il nous faut une base de données dans laquelle on va enregistrer les utilisateurs et les rôles. Pour cela, rien de plus simple: l'utilitaire aspnet_regsql.exe (situé dans le répertoire (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\) fait déjà tout le travail pour nous:

image

Ensuite, nous allons devoir créer un site Web, qui servira pour les authentifications et les autorisations. Pour cela, crééez un site Web qui soit "AJAX Compliant" et ouvrez le fichier web.config. Commencez par rajouter une chaîne de connexion vers votre serveur SQL et, plus précisément, vers la base de données que vous avez configuré précédemment:

image

Ensuite, changez le mode d'authentification de l'application. Par défaut, cela cela utilise l'authentification Windows intégré mais nous, nous allons choisir l'authentification par formulaire, celle qui permet de saisir un couple login/mot de passe pour se connecter:

image

A présent, ajoutez un bloc "Membership" afin de configurer l'application pour utiliser la base de données:

image

Maintenant, ajoutez un bloc "roleManager", comme précédemment:

image

Grâce à ces opérations, votre site Wen est configuré pour utiliser les rôles et tout le reste. Cependant, une application Windows ne peut pas utiliser ces services directement: nous allons devoir les exposer grâce à de l'AJAX. Pour celà, rajoutez ce bout de code dans le fichier:

image

Maintenant, il ne reste plus qu'à créer des utilisateurs et des rôles. Pour cela, rendez-vous dans l'outil d'administration du site Web et ccréez 2 utilisateurs (admin, user) et 2 rôles (Admin, Employee):

image

image

image

Toute la partie "configuration" est à présent terminée. Il ne vous reste plus qu'à utiliser ces services dans une application Windows. Pour cela, créez une application Windows ou WPF et, dans les propriétés, sélectionnez l'onglet "Services" puis cochez la case à coté de "Enable client application services":

image

Ensuite, assurez que "Use Forms authentication" est sélectionné puis, dans les zones de texte suivante, entrez l'URL de votre site Web, qui expose les Web Services:

  • Authentication service location
  • Role service location
  • Web settings service location

Un petit tour dans le fichier app.config vous permettra de voir qu'effectuer ces actions a permis à Visual Studio de créer des noeuds roleManager et Membership, ainsi qu'une clé, dans appSettings, pointant chacun vers le fichier "*_JSON_AppService.axd" correspondant sur le site Web.

A l'utilisation, il vous suffit d'appeler la méthode ValidateUser, en lui passant en paramètres le login/mot de passe, pour que l'application se "branche" sur les services d'authentification du site Web et vous renvoit l'information sur votre statut de connexion:

image

Une fois authentifié, il vous est possible de tester l'appartenance de l'utilisateur à un rôle donné:

image

Si on le veut, on peut même allez plus loin en exposant, depuis le site Web, des propriétés utilisables dans l'application.

Pour cela, ouvrez le fichier web.config et ajoutez ces lignes, utilisez pour exposer la propriété BackColor:

image

Ensuite, sous le noeud <webServices>, ajoutez cette ligne, qui permet de donner accès, en lecture/écriture, à cette propriété:

image

A présent, retournez dans les paramètres de votre application Windows, sélectionnez l'onglet "Settings" et cliquez sur "Load Web Settings":

image

Dans la fenêtre qui survient, pressez simplement le bouton "Skip Login" (cela est possible car nous avons indiqué que certaines propriétés étaient accessibles aux utilisateurs non loggés):

image

Visual Studio se connectera alors automatiquement au site Web que vous avez indiqué précédemment dans la case "Web settings service location" et remplira la liste des paramètres avec ceux exposés sur le site Web. Ensuite, dans votre code, libre à vous d'utiliser ces paramètres de la manière habituelle:

image

 

 

Comme vous pouvez le constater, ces "Client Application Services" sont très intéressants à mettre en oeuvre. Nous n'avons couvert ici qu'une petite partie du sujet, de quoi faire une bonne introduction, mais je crois savoir que quelqu'un prépare un article plus complet dessus: si le sujet vous (a) intéresse(é), je ne saurais que vous conseiller d'avoir un peu de patience Wink

 

En savoir plus: Client Application Services Overview

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 21 mai 2008 10:51 par Thomas LEBRUN
Classé sous : , ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SharePoint 2013: Préparation de la migration - Création des site Templates dans 2010 et 2013 par Blog Technique de Romelard Fabrice le 08-20-2014, 16:31

- [ #Yammer ] How to change interface language ? Comment changer la langue de l’interface ? par Le blog de Patrick [MVP SharePoint] le 08-20-2014, 14:21

- Onedrive Sync Engine Host : CPU à 100% par Le petit blog de Pierre / Pierre's little blog le 08-06-2014, 22:22

- SharePoint : Bug sur la gestion des permissions et la synchronisation Office par Blog Technique de Romelard Fabrice le 07-10-2014, 11:35

- SharePoint 2007 : La gestion des permissions pour les Workflows par Blog Technique de Romelard Fabrice le 07-08-2014, 11:27

- TypeMock: mock everything! par Fathi Bellahcene le 07-07-2014, 17:06

- Coding is like Read par Aurélien GALTIER le 07-01-2014, 15:30

- Mes vidéos autour des nouveautés VS 2013 par Fathi Bellahcene le 06-30-2014, 20:52

- Recherche un passionné .NET par Tkfé le 06-16-2014, 12:22

- [CodePlex] Projet KISS Workflow Foundation lancé par Blog de Jérémy Jeanson le 06-08-2014, 22:25