2

Je reçois des erreurs lorsque j'essaie d'ajouter une référence à un service Web dans Visual Studio 2010. Le service Web est implémenté en Java à l'aide de la pile JAX-WS/Metro/GlassFish et contient une politique UsernameToken. Voici un extrait du WSDL:Visual Studio ne peut pas consommer de service Web contenant la règle UsernameToken

<wsp:Policy 
     xmlns:wsp="http://www.w3.org/ns/ws-policy" 
     xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" 
     wsu:Id="UsernameToken"> 
    <sp:SupportingTokens> 
     <wsp:Policy> 
      <sp:UsernameToken sp:IncludeToken=".../IncludeToken/AlwaysToRecipient" /> 
     </wsp:Policy> 
    </sp:SupportingTokens> 
</wsp:Policy> 

Lorsque je tente d'ajouter une référence de service à ce service Web dans Visual Studio, je reçois les avertissements suivants:

Custom tool warning: 
    The following Policy Assertions were not Imported: 
    XPath://wsdl:definitions[@targetNamespace='http://archfirst.org/bfoms/tradingservice.wsdl']/wsdl:binding[@name='TradingWebServicePortBinding'] 
    Assertions: 
    <sp:SupportingTokens xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702'>..</sp:SupportingTokens> 

Custom tool warning: 
    Endpoint 'TradingWebServicePort' at address 'http://localhost:8080/bfoms-javaee/TradingService' 
    is not compatible with Silverlight 4. Skipping... 

Custom tool warning: 
    No endpoints compatible with Silverlight 4 were found. The generated client 
    class will not be usable unless endpoint information is provided via the 
    constructor. 

Pourquoi Visual Studio ne peut pas importer l'assertion?

P.S. J'ai été capable d'importer et de tester le service Web en utilisant l'outil SoapUI.

Répondre

3

WCF par défaut prend uniquement en charge le jeton de nom d'utilisateur sur le transport sécurisé = HTTPS (ou avec la sécurité des messages fournie par les certificats mais message security is not supported par Silverlight). There is a way pour créer une liaison personnalisée pour permettre le jeton de nom d'utilisateur sur le transport non sécurisé mais allowInsecureTransportis probably not supported par Silverlight 4 (je ne l'ai pas trouvé lors de la création de liaisons personnalisées).

WCF ne prend pas en charge le jeton de nom d'utilisateur avec un mot de passe digéré. Si vous avez besoin d'un jeton de nom d'utilisateur avec le mot de passe digéré you have to implement additional part du pipeline de sécurité WCF. Encore une fois, il peut être un problème avec l'ensemble des fonctionnalités limitées de Silverlight.

Vous pouvez essayer de créer un service proxy dans votre application d'hébergement. Ce service sera appelé par l'application Silverlight et il appellera le service Java.

+0

Merci Ladislav. Depuis que j'ai le contrôle sur le serveur, je peux le changer à tout ce que je veux. Quel est le mécanisme d'authentification basé sur WS-I le plus simple pris en charge par le client Silverlight? Ma seule exigence du côté Java est d'authentifier l'utilisateur appelant et de déterminer son nom d'utilisateur. Ce serait génial si vous pouviez également me référer à un lien qui explique comment le configurer sur le côté Silverlight. Merci. – Naresh

+0

Je voulais juste ajouter que j'essayais d'éviter HTTPS parce que je ne voulais pas le mal de tête de la mise en place des certificats. Cependant, si cet effort est moins que d'essayer de faire fonctionner l'authentification dans Silverlight, alors je suis prêt à suivre cette voie. – Naresh

+1

@Naresh: Je pense que vous devriez essayer d'utiliser HTTPS. J'espère que ça marchera. –

Questions connexes