WSE 3.0에서 X.509 인증서와 함께 메시지 계층 보안을 사용하는 웹 서비스가 있습니다. 이 서비스는 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>`
(, BTW 유래에 잘 여기에서 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가 궁금하다. 그렇지 않으면 시스템에서 클라이언트와 서비스를 모두 제어 할 수 있으므로 상호 운용성이 문제가되지 않는다.