Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    View Cyril Durand's profile on LinkedIn

    hit counters

Securiser un WebService Ajax

Lorsque l'on conçoit une application Web avec ASP.net, il nous arrive de plus en plus souvent de construire un WebService pour les besoins internes du site. Par exemple le contrôle AutoComplete des Ajax Toolkits nécessite la création d'un WebService qui prend en paramètre un début de mot et retourne une liste de suggestion. Cela pose quelques problèmes de sécurité car tout le monde peut facilement utiliser ce WebService. Il est donc nécessaire de le sécuriser un minimum.

Lorsque vous consommez un WebService en JavaScript avec Microsoft ASP.net Ajax Extensions, vous ajoutez une référence au niveau du ScriptManager ce qui entraine le rajout d'une référence vers un fichier JavaScript spécial : un proxy JavaScript. Ce proxy se trouve à l'adresse monWebService.asmx/js ou monWebService.asmx/jsdebug. 

L'idée est de créer un HttpModule qui va autoriser ou bloquer l'appel vers le WebService. Vous pouvez le retrouver sur ASPFr.com ici : Module d'authentification pour les WebServices Ajax

Le principe est simple, tout d'abord je regarde si la requête porte sur un WebService en vérifiant l'extension de la ressource demandé (.asmx), puis je récupère le Type de la ressource grâce à la méthode BuildManager.GetCompiledType, je vérifie ensuite que le WebService est bien marqué de l'interface IWebServiceRequireAuthentication (de ma création). Je regarde ensuite si on demande le proxy JavaScript si c'est le cas je le conserve dans une variable Session, sinon je regarde l'état de la variable Session et lance une Exception si l'utilisateur n'a pas le droit d'exécuter cette WebMethod.

Pour l'utiliser il ne faudra pas oublier de rajouter l'HttpModule dans votre Web.Config, d'implémenter l'interface IWebServiceRequireAuthentication et enfin d'activer les Sessions au niveau de la WebMethod.

[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] public class WebService : System.Web.Services.WebService, IWebServiceRequireAuthentication { [WebMethod(EnableSession=true)] public string HelloWorld() { return "Hello World"; } }

La source complete est disponible ici : Module d'authentification pour les WebServices AJAX

Posted: dimanche 11 mars 2007 01:49 par cyril
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 :

Commentaires

Gribouillon a dit :

Vivement l'Ajax officiel sous SharePoint !

Je saurais ou trouver les infos lorsque je m'y mettrais. Merci ;-)

# mars 12, 2007 00:26
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- EF et WPF : Réponse à Thomas par Matthieu MEZIL le il y a 2 heures et 6 minutes

- EF et WPF par Matthieu MEZIL le il y a 17 heures et 20 minutes

- C# : Vérifications / Performances par Pierrick's Blog le il y a 20 heures et 55 minutes

- Du nouveau sur le clubvsts par Noham Choulant le il y a 22 heures et 35 minutes

- StyleCop SDK disponible par Michel Perfetti [Miiitch] le 08-29-2008, 13:59

- Data Structures and Algorithms : un livre gratuit par Elise's blog le 08-29-2008, 11:39

- [ASP.NET] - Ajax vNext Preview 2 par Aurelien's Blog - When ClientSide meets .Net le 08-29-2008, 10:35

- TPH IS Not Null sur la relation par Matthieu MEZIL le 08-29-2008, 08:15

- Mise à jours du code Source du .NET Framework 3.5 SP1 disponible sur le Reference Source Code Center par RedoBlog - The .NET Gentleman !!! le 08-29-2008, 01:50

- ASP.net 3.5 SP1 : combiner les fichiers JavaScript grace au CompositeScript du ScriptManager (ex ScriptCombining du toolkitScriptManager) par Atteint de JavaScriptite Aiguë [Cyril Durand] le 08-28-2008, 22:39