クライアント証明書用のカスタム SSL バリデーターが必要な WCF サービスがあります。ただし、サービスにどのクラスを使用するかを伝えようとすると、次のようにTypeLoadException
言われます。
アセンブリ 'ConnectorExtras' から型 'ConnectorExtras.Validator' を読み込めませんでした。
そのクラスを参照する Web.Config のセクションを次に示します。
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="Custom"
customCertificateValidatorType="ConnectorExtras.Validator, ConnectorExtras" />
</clientCertificate>
</serviceCredentials>
, ConnectorExtras
構成ファイルでアセンブリ名を省略するとエラーが次のように変わるため、そのセクションが問題であることはわかっています
アセンブリ 'System.ServiceModel、バージョン = 3.0.0.0、カルチャ = ニュートラル、PublicKeyToken = b77a5c561934e089' からタイプ 'ConnectorExtras.Validator' を読み込めませんでした。
これがバリデーターの私のクラスです。コードは~\App_Code\Validator.cs
ウェブサイトに掲載されています。
using System.IdentityModel.Selectors;
using System.IdentityModel.Tokens;
using System.Security.Cryptography.X509Certificates;
using ConnectorExtras.App_GlobalResources;
namespace ConnectorExtras
{
public class Validator : X509CertificateValidator
{
public Validator()
{
_certToCompare = new X509Certificate(ValidatorResources.TestCert, "a");
}
private readonly X509Certificate _certToCompare;
public override void Validate(X509Certificate2 certificate)
{
if(certificate.Equals(_certToCompare) == false)
throw new SecurityTokenValidationException();
}
}
}
ただし、コンストラクターにブレークポイントを配置すると、ヒットすることはありません。
バリデーターを使用してカスタム証明書の検証を行うには、何をする必要がありますか?