2011-05-19 3 views
2

Je travaille sur une application Silverlight 4 qui se connecte à un service WCF de réclamation. J'utilise le code suivant pour récupérer le jeton de réclamation dans mon WCF pour effectuer l'autorisation. Lorsque j'utilise wsHttpBinding dans WCF et que je l'essaie avec une application console, cela fonctionne très bien lorsque j'utilise wsHttpBinding dans WCF. Mais depuis Silverlight ne supporte que basicHttp et customeBinding, je ne peux pas utiliser wsHttp, ws2007Http ou toute autre liaison. En fait, je ne reçois pas le jeton IClaimIdentity dans mon WCF de Silverlight.Accès à un WCF Claim Aware de Silverlight

Est-il possible que je puisse utiliser l'une des liaisons supportionnées Silverlight et toujours obtenir l'identité ClaimIdentity dans mon WCF. Y at-il un tutoriel/texte d'aide où je peux lire plus sur ce sujet.

Mes paramètres WCF sont:

<system.serviceModel> 
    <services> 
     <service name="ClainAwareWCF.Service" behaviorConfiguration="ClainAwareWCF.ServiceBehavior"> 
     <endpoint address="" binding="basicHttpBinding" contract="ClainAwareWCF.IService" bindingConfiguration="basicbind"> 
      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="basicbind"> 
      <security mode="TransportCredentialOnly"></security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ClainAwareWCF.ServiceBehavior" > 
      <federatedServiceHostConfiguration/> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <extensions>  
     <behaviorExtensions> 
     <add name="federatedServiceHostConfiguration" type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
     </behaviorExtensions> 
    </extensions> 
    </system.serviceModel> 

Répondre

1

Essayer d'appeler directement depuis le client ne se produira jamais à cause des problèmes de liaison et aussi parce que la sécurité de sensibilisation auth client de SL (Windows/Forms/WIF/etc .), mais une approche consiste à utiliser les services d'authentification de domaine RIA Services pour authentifier et appeler les services du côté serveur via un point de terminaison WCF RIA Invoke. Le contexte de sécurité de l'utilisateur est transmis par proxy au client et vous pouvez directement canaliser les données sur le réseau.

Cela peut vous mettre dans la bonne direction:

http://archive.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=5617

1

Revendications support de Silverlight doesnt D'après autorisation et WS-Trust de la boîte. Microsoft allait mettre cela dans Silverlight 5 mais a oublié de le faire malheureusement.

Il existe cependant une version "Silverlight" très élégante et utilisable du matériel WIF IdentityModel disponible dans le kit de formation Identity. La solution consiste en un AuthenticationService de base qui convertit les jetons d'authentification WIF en côté serveur Claims et une bibliothèque cliente Silverlight "SL.IdentityModel" contenant les blocs de construction tels qu'une version Silverlight d'un ClaimsPrincipal. Obtenez le kit de formation d'identité here. Recherchez l'exemple d'implémentation Silverlight.

+0

Ya, j'ai finalement utilisé cela. Merci beaucoup.... – Bhaskar

Questions connexes