2010-09-28 16 views
2

je dois vous connecter à un service Web sécurisé ASMX via HTTPS en utilisant Silverlight 4. J'ai été en mesure de se connecter au service à l'aide d'une application WPF en utilisant la configuration suivante:Silverlight: la connexion au service ASMX sécurisé

<binding name="wsSomeWebService" closeTimeout="00:01:00" 
     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
     useDefaultWebProxy="true"> 
    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
     maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
    <security mode="Transport"> 
     <transport clientCredentialType="Basic" proxyCredentialType="Basic" 
      realm="www.somedomain.com" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
    </security> 
    </binding> 

Et dans le code I procédez comme suit:

client.ClientCredentials.UserName.UserName = "username"; 
client.ClientCredentials.UserName.Password = "password"; 

Cependant, lorsque je tente de se connecter à partir de Silverlight je reçois toujours une exception de sécurité.

Sur le serveur le fichier de stratégie ressemble à ceci:

<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-methods="*" http-request-headers="*">  
     <domain uri="*"/> 
     </allow-from>  
     <grant-to>  
     <resource path="/" include-subpaths="true"/> 
     </grant-to>  
    </policy> 
    </cross-domain-access> 
</access-policy> 

sur Silverlight, j'ai essayé d'utiliser ceci:

<customBinding> 
    <binding name="secureBinaryHttpBinding" > 
     <security authenticationMode="UserNameOverTransport"/> 
     <httpsTransport /> 
    </binding> 
    </customBinding> 

Et aussi ceci:

 <basicHttpBinding> 
     <binding name="basicSecureBinding" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647"> 
      <security mode="Transport"/> 
     </binding> 
     </basicHttpBinding> 

Mais ni semble fonctionner.

Quelqu'un at-il une idée sur la façon dont je peux reproduire la configuration réussie que j'ai utilisée dans WPF sur un client Silverlight?

+0

Que se passe-t-il lorsque vous faites simplement un 'Add Service Reference'? – Nate

Répondre

2

Au lieu de

<domain uri="*"/> 

utilisation

<domain uri="http://*"/> 
<domain uri="https://*" /> 

dans votre clientaccesspolicy.xml. Cochez cette case link pour plus de détails.

+0

Cette modification a résolu le problème à l'aide de basicHttpBinding par défaut. Merci pour ça. – Murven