0

以下のコード スニペットの BizTalk 送信ポートにインポートするには、カスタム バインディング構成ファイルが必要です。

構成ファイルのバインド要素にユーザー名 UserNameSecurityTokenParameters を追加できませんが、プログラムで可能です。

必要な SOAP ヘッダーは

<s:Header>
        <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
     <u:Timestamp u:Id="uuid-9e629b43-b7be-498b-9cf6-03ee8a54c0d0-1">
        <u:Created>2013-01-08T10:35:11.554Z</u:Created>
        <u:Expires>2013-01-08T10:40:11.554Z</u:Expires>
     </u:Timestamp>
     <o:BinarySecurityToken u:Id="uuid-85871719-c001-4435-82dd-a229d1f93b9d-3" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MIIEijCCA3KgAwIBAgIOAQAAAAABO0dvgccW+zwwDQYJKoZIhvcNAQEFBQAwQDEXMBUGA1UEChMOQ3liZXJ0cnVzdCBJbmMxJTAjBgNVBAMTHEN5YmVydHJ1c3QgU3VyZWNyZWRlbnRpYWwgQ0EwHhcNMTIxMTI4MTQzNzE0WhcNMTMxMTI4MTQzNzE0WjB+MQswCQYDVQQGEwJVUzEjMCEGA1UEChMaTkVDIENvcnBvcmF0aW9uIG9mIEFtZXJpY2ExJTAjBgkqhkiG9w0BCQEWFmJpamkuc3VrdW1hckBuZWNhbS5jb20xIzAhBgNVBAMTGk5FQyBDb3Jwb3JhdGlvbiBvZiBBbWVyaWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAob9NweUoFvfH+fvTJk6xitNvCjYN+Yev4tpUAqBcz3Y0RgzySrdf2cZzRd0j53R2Q98KEgkVXAdfR8yBvOpUVljpNSRvwNT8TYl9MN/giiH6hQUPTli9mq+tNuplT71soeTL/3RbVRzNWdhdZn8itV9Bte8nAKnub4lApgh1QLub2uUfxqYWOo2jz5t4ADxGohGfS7lJgincWIsqDGtf2vYu33SppFhyhAtINRMmP35a2S2aB/ynS+MRdP053Gc5OIh3jjQE/mMWQjHHu4lXFHJiImkhuv6ZGoUzVx2J8jyi9jqOz9wBw8xqC+ch+GU2hME/eDoTxQy0vQy1CR/xNQIDAQABo4IBQjCCAT4wHwYDVR0jBBgwFoAUSUySC81KI7bOee6eVTNrWkTAApUwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5vbW5pcm9vdC5jb20vU3VyZUNyZWRlbnRpYWwuY3JsMB0GA1UdDgQWBBSL1imayafzgtoV6/cjqcDTmvQ9IDAPBgNVHRMBAf8EBTADAgEAMA4GA1UdDwEB/wQEAwIE8DARBglghkgBhvhCAQEEBAMCBaAwSQYIKwYBBQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vY2FjZXJ0Lm9tbmlyb290LmNvbS9zdXJlY3JlZGVudGlhbC5jcnQwIQYDVR0RBBowGIEWYmlqaS5zdWt1bWFyQG5lY2FtLmNvbTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwDQYJKoZIhvcNAQEFBQADggEBAERfT+KyQiDAeFisPfXeYvOGdqSefMJl133IYSve0xup47NoI0HL7UqW/y6bpUaZpXM4+slRzKK573jArUEzqV8sqmEyP/EF2tkJGFAfhQuSyxKDOBMTEII8O4OWKv7YxBMR+v2nm4noKotBXGnfbe3SON2kozHXCBlVB3btO1d/tj/js1bFFZ5+R1ihJobxRtW3GYint9LRdUvKdAqChWsh50/U1GmWgzY/Y2UE9I3mHy7JRdj+LU6iliPobdWZBZlFgEISItTjn2PrCZDXAUwtrMvztWBKurlsDzCn6Zu3U6TDKjzmfm1i+0hvJ7cnAAU8RQT4Bh/zfJG1sxTr98s=</o:BinarySecurityToken>
     <o:UsernameToken u:Id="uuid-85871719-c001-4435-82dd-a229d1f93b9d-1">
        <o:Username>WPG_NEC</o:Username>
        <o:Password o:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">NECwsTw02</o:Password>
     </o:UsernameToken>
     <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
           <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
           <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
           <Reference URI="#_1">
              <Transforms>
                 <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              </Transforms>
              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
              <DigestValue>Jb40XGCX3BM23CUxONUtejfkd20=</DigestValue>
           </Reference>
           <Reference URI="#uuid-9e629b43-b7be-498b-9cf6-03ee8a54c0d0-1">
              <Transforms>
                 <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              </Transforms>
              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
              <DigestValue>UO1kn2g4oTLkiYoRWYtLa+q/ePo=</DigestValue>
           </Reference>
           <Reference URI="#uuid-85871719-c001-4435-82dd-a229d1f93b9d-1">
              <Transforms>
                 <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              </Transforms>
              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
              <DigestValue>97Q6wwswEhNLkHt7iyHEI5WzWU0=</DigestValue>
           </Reference>
        </SignedInfo>
        <SignatureValue>IUMg0j7HiWFHHHUI9OPu+kDCNMaaOVNX3JBg1/EabzDW3UMFAntb94xZ7nnf6zFOJHbMajUgMwt7yt26I/u+gynhLQlQeOKfDkFzyXrQeX1uYsTdBh88tDHBd8BdBdNaLzXtJB/G5D4b2kwXfrVaQlB3TqKPc84814aaNQaVuquuTkfR7Mj9VXRcDSswWVsHke7GxQeMyt/pg0mtzQnDO0oLzCVXKTLg3MuvQpD5JppMIbdxgMojs8y6GiTKvWRKOwgZXZ8Olab6SSZfz0/s59YvrPtioabafqsPKMGUGnzAUylNvcXM/bKxohWcI+dM+JGck55HzkMzHMzWnv6aFA==</SignatureValue>
        <KeyInfo>
           <o:SecurityTokenReference>
              <o:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-85871719-c001-4435-82dd-a229d1f93b9d-3"/>
           </o:SecurityTokenReference>
        </KeyInfo>
     </Signature>
  </o:Security>

以下のコードは動作するコードですが、以下のコードのカスタム バインディング構成ファイルを生成できません。したがって、この目的で BizTalk アダプターを使用することはできません。

このコードは、上記の SOAP ヘッダーを生成します。BizTalk 送信ポートにインポートするためのカスタム バインディング構成ファイルが必要です。

 var b = new CustomBinding();
        var sec = (AsymmetricSecurityBindingElement)SecurityBindingElement.CreateMutualCertificateBindingElement(MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10);
        var userNameToken = new UserNameSecurityTokenParameters();
        sec.EnableUnsecuredResponse = true;
        sec.EndpointSupportingTokenParameters.Signed.Add(userNameToken);
        sec.MessageSecurityVersion =
            MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
        sec.IncludeTimestamp = true;
        sec.SecurityHeaderLayout = SecurityHeaderLayout.Strict;
        sec.AllowInsecureTransport = true;
        b.Elements.Add(sec);
        b.Elements.Add(new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8));
        b.Elements.Add(new HttpsTransportBindingElement());
        var c = new ServiceReference1.taservicePortClient(b, new EndpointAddress(new Uri("https://abc.def.com:443/qwerty"), new DnsEndpointIdentity("ABC Corp of World"), new AddressHeaderCollection()));
        c.ClientCredentials.UserName.UserName = "Username";
        c.ClientCredentials.UserName.Password = "Pwd";
        c.ClientCredentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "42D01DCCBE1EF5F6C414E0869C21ED0EC86C9B88A");
        c.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "42D01DCCBE1EF5F6C414E0869C21ED0EC86C9B88A");
        ServiceReference1.taservicePort d = c;
        var e = new ServiceReference1.receiveRequest(input);
        ServiceReference1.receiveResponse res = d.receive(e);
4

1 に答える 1

0

WCF構成は、コードでカスタムバインディングを作成するときに使用できる機能のサブセットのみを提供します。新しいバインディングを構成で使用できるようにする場合は、新しいバインディング拡張機能を作成する必要があります。この記事のクラスを確認BinaryOverHttpWithChaosBindingしてください。

于 2013-01-08T16:18:13.623 に答える