Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

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

[Silverlight] Authentification Windows avec Silverlight 3

J’ai récemment eu besoin de mettre en place un peu de sécurité sur l’un des projets Silverlight sur lequel je travaille. Il fallait faire simple: récupérer l’ensemble des informations de l’utilsiateur connecté.

Pour cela, rien de plus simple: on laisse faire l’authentification Windows qui est nativement gérée par Silverlight 3. Lors de mes tests, qui se faisait avec le serveur Web intégré à Visual Studio (à savoir Cassini), tout se passait bien donc, on passe en production.

Et là, c’est le drame: une fois sur 2, il m’est impossible d’appeler les services WCF utilisés par l’application, car je recevais des erreurs 401 (accès non autorisé).

Après investigations, je suis tombé sur ce site qui m’a finalement donné la raison de l’échec de l’appel des services:

http://developers.de/blogs/damir_dobric/archive/2009/08/22/soap-faults-and-new-network-stack-in-silverlight-3.aspx

La faute revient tout simplement à cette ligne:

   1: bool registerResult = WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);

A priori tout simple, ce bout de code permet d’indiquer au runtime Silverlight 3 qu’il doit utiliser la “Client HTTP Stack”, plutôt que la “Browser HTTP Stack”, ce qui permet, en cas d’erreur sur un serice WCF, d’avoir le descriptif complet de l’exception plutôt qu'e la fameuse erreur: “Error 404: Not found”.

Cependant, il s’avère que ce bout de code empêche également le proxy de votre service WCF d’envoyer les headers d’authentification ! Du coup, impossible de vous authentifier auprès du service.

 

Voila, en espérant que cela vous aide et vous évite de perdre trop de temps Wink

 

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: vendredi 6 novembre 2009 13:35 par Thomas LEBRUN
Classé sous : ,

Commentaires

simon ferquel a dit :

Attention, ca ne bloque que l'authentification Windows Intégrée (qui de toute façon ne fonctionne QUE sous IE). Pour une authentification basée sur l'ASP.Net Membership Provider, y'a pas de soucis, il faut juste penser à partager le même CookieContainer pour tous les proxys.

# novembre 7, 2009 13:03

Thomas LEBRUN a dit :

C'est bien pour cela que le titre de mon post parle d'authentification Windows ;)

Mais merci pour la précision !

# novembre 7, 2009 14:25

smo a dit :

L'authentification intégrée fonctionne aussi sous Firefox depuis bien longtemps. Pas encore sous chrome, mais ça arrivera sans doute l'année prochaine...

Pour la configurer, chercher "firefox ntlm" dans google.

# novembre 18, 2009 00:19
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [MIX10] Keynote deuxième journée – Internet Explorer 9, Html5, Visual Studio 2010, OData par Atteint de JavaScriptite Aiguë [Cyril Durand] le il y a 14 heures et 58 minutes

- Certifications beta .NET 4 par Kévin Gosse le il y a 15 heures et 5 minutes

- [Mix 2010] – Microsoft Translator Technology Preview V2 par RedoBlog - The .NET Gentleman !!! le il y a 15 heures et 45 minutes

- Lancement en Preview de Cyclone lors des TechDays 2010! par Blog de Frédéric Queudret le il y a 18 heures et 8 minutes

- [WP7] Je ne veux pas d’un nouvel iPhone par Le blog de FremyCompany le il y a 21 heures et 27 minutes

- [WF4] Pourquoi utiliser le ContentPresenter dans l’ActivityDesigner? par Blog de Jérémy Jeanson le 03-17-2010, 07:54

- [Mix 2010] – Telechargez Internet Explorer 9 en Preview ! par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 00:58

- [MIX 2010] – Keynote Day 2 online : Windows Internet Explorer 9, jQuery, OData et Dallas CTP2 ! par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 00:18

- [Mix 2010] – Retour d’expérience développement Seesmic sur Windows Phone 7 par RedoBlog - The .NET Gentleman !!! le 03-16-2010, 23:44

- [Mix 2010] – Le Keynote Day 1 disponible online ! par RedoBlog - The .NET Gentleman !!! le 03-16-2010, 23:21