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

- Life at MS par Matthieu MEZIL le il y a 4 heures et 33 minutes

- [ORM] Visual NHibernate Beta par Thomas Jaskula le 12-04-2009, 12:01

- [Silverlight] Installer Silverlight 4 dans Visual Studio 2010 par Blog Technique d'Audrey PETIT le 12-03-2009, 22:30

- [Windows Mobile] Afficher une fenêtre lors d’une exception non gérée par Vko le 12-03-2009, 19:14

- SharePoint 2007 : Modification de gestion des règles dans les profils utilisateur MOSS par Blog Technique de Romelard Fabrice le 12-03-2009, 18:06

- Montées de version vers SharePoint 2010… par Le blog de Patrick le 12-03-2009, 09:48

- SQL Server 2008 R2 : Le grand retour du suivant, suivant… Terminé ! par SQL Server vu par Christian Robert le 12-03-2009, 09:05

- SharePoint WebDAV, IIS 7.5 et Windows Server 2008 R2 par Jerome Laban le 12-03-2009, 01:14

- [.NET] Introduction à l’intégration continue. Mes explorations… par Thomas Jaskula le 12-02-2009, 13:26

- [TFS 2010] Les power tools compatibles TFS 2010 beta 2 disponibles par Michel Perfetti [Miiitch] le 12-02-2009, 09:39