2008-09-17 16 views
1

WSE 3.0のX.509証明書でメッセージ層セキュリティを使用するWebサービスがあります。このサービスは、X509v3ポリシーを使用してsoapheader内のさまざまな要素に署名します。カスタムX509SecurityTokenManagerが無視されました

私はカスタムX509SecurityTokenManagerを実装しようとしたので、web.configにセクションを追加したので、証明書のカスタムチェックを行う必要があります。

サービスを私のWseproxyで呼び出すと、エラー(NotImplementedException)が発生すると予想されますが、コールはトラフになり、下の例ではコンソールに "foo"が表示されます。

質問:何が欠けていますか? web.configのbinarySecurityTokenManager型は、RDI.Server.X509TokenManagerの完全なクラス名と一致します。 X509TokenManagerは X509SecurityTokenManagerから継承しています(詳細なメソッドは単なるスタブです)。簡潔にするために編集した私のweb.configの

using System; 
using System.Xml; 
using System.Security.Permissions; 
using System.Security.Cryptography; 
using Microsoft.Web.Services3; 
using Microsoft.Web.Services3.Security.Tokens; 

namespace RDI.Server 
{ 

[SecurityPermissionAttribute(SecurityAction.Demand,Flags = SecurityPermissionFlag.UnmanagedCode)] 
public class X509TokenManager : Microsoft.Web.Services3.Security.Tokens.X509SecurityTokenManager 
{ 
    public X509TokenManager() : base() 
    { 
     throw new NotImplementedException("Stub"); 
    } 

    public X509TokenManager(XmlNodeList configData) : base(configData) 
    { 
     throw new NotImplementedException("Stub"); 
    } 

    protected override void AuthenticateToken(X509SecurityToken token) 
    { 
     base.AuthenticateToken(token); 
     throw new NotImplementedException("Stub"); 
    } 
} 
} 

最初の数行

<?xml version="1.0"?> 
    <configuration><configSections><section name="microsoft.web.services3" type="..." /> 
    </configSections> 
    <microsoft.web.services3> 
    <policy fileName="wse3policyCache.config" /> 
    <security> 
     <binarySecurityTokenManager> 
     <add type="RDI.Server.X509TokenManager" valueType="http://docs.oasis-open.org/..." /> 
     </binarySecurityTokenManager> 
    </security> 
    </microsoft.web.services3>` 

(ところで、stackoverflowの時にきれいにここに一つのフォーマットのXMLをどのように行う?)

Administration.AdministrationWse test = new TestConnector.Administration.AdministrationWse(); 

X509Certificate2 cert = GetCert("RDIDemoUser2"); 
X509SecurityToken x509Token = new X509SecurityToken(cert); 
test.SetPolicy("X509"); 
test.SetClientCredential(x509Token); 

string message = test.Ping("foo"); 

Console.WriteLine(message); 

私は」 NET 2.0(VS2005)で当時のところ止まっていたので、私はWCFが間違っていると推測しています。そうでなければ、相互運用性は問題ではありません。

答えて

0

私が知っている建設的なアドバイスはありませんが、もし私があなただったら、できるだけ早くWSE3.0から降ります。今年の初めにWCFとJavaクライアントとの相互運用を実現するためにいくつかの作業を行いましたが、これはまさにKnightMareでした。

一方、WCFは実用上問題なく、このような分野のドキュメントはかなり良いです。それはあなたのための選択肢ですか?

1

問題は他の場所にあります。私のserverprojectはweb-appであり、いくつかのオプションはweb-appsだけではWebサイト用ではありませんでした。そこで私は小さなWebサイトプロジェクトを作成し、web.configsを比較し、いくつかの行が異なることに気付きました。

これらの行は、Webサイトのweb.configファイルではなく、私は私が期待されるエラーを得たこれらの行を追加した後、私の他のPROJEKT

<soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    <soapExtensionImporterTypes> 
    <add type="Microsoft.Web.Services3.Description.WseExtensionImporter, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </soapExtensionImporterTypes> 

にありました。

関連する問題