Silverlight アプリケーションをホストする Web サーバーとリモート WCF サービスとの間のクロスドメイン通信を許可することにより、Silverlight でこれを実現できる場合があります。
その場合、WCF サービスがホストされているドメインのルートにclientaccesspolicy.xmlファイルを配置する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="http://*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
このアプローチについてMSDNが述べていることは次のとおりです。
HTTP アプリケーションでホストされている Silverlight コントロールから HTTPS サービスへのアクセスを許可するには、<domain uri=”http:// ” />* 要素を<allow-from>要素内に配置する必要があります。
私はこれを自分で試したことはありませんが、試してみる価値があるかもしれません。詳細については、次のリソースも確認してください。
.NET で X.509 証明書の検証を無効にする
.NET アプリケーションの場合、このサンプルの WCF 構成では、証明書が信頼されているかどうかと、クライアントでまだ有効であるかどうかの両方の検証が無効になります。
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="DisableServiceCertificateValidation">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"
revocationMode="NoCheck" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="http://localhost/MyService"
behaviorConfiguration="DisableServiceCertificateValidation"
binding="wsHttpBinding"
contract="MyNamespace.IMyService"
name="MyServiceWsHttp" />
</client>
</system.serviceModel>
代替ソリューションは、サービスによって提供される X.509 証明書を検証するカスタム ロジックを提供することです。その場合、次に従って構成ファイルを変更する必要があります。
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="DisableServiceCertificateValidation">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="Custom"
customCertificateValidatorType="MyCertificateValidator, Client"
revocationMode="NoCheck" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="http://localhost/MyService"
behaviorConfiguration="DisableServiceCertificateValidation"
binding="wsHttpBinding"
contract="MyNamespace.IMyService"
name="MyServiceWsHttp" />
</client>
</system.serviceModel>
次に、 X509CertificateValidatorから派生するクラスを作成して、カスタム検証ロジックを実装します。
public class MyCertificateValidator : X509CertificateValidator
{
public override void Validate(X509Certificate2 certificate)
{
// Add custom validation logic
// Throw an exception to fail validation
}
}
いつものように、 MSDNでより詳細な例を見つけることができます。