1

クライアント証明書用のカスタム 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();
        }
    }
}

ただし、コンストラクターにブレークポイントを配置すると、ヒットすることはありません。

バリデーターを使用してカスタム証明書の検証を行うには、何をする必要がありますか?

4

0 に答える 0