Click here to Skip to main content
15,886,088 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
I have a WCF service with the below service\operation\data contracts.



C#
namespace Enrollment
   {
       [ServiceContract(Namespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")]
       public interface wstep
       {

           [OperationContract(Action = "http://schemas.microsoft.com/windows/pki/2009/01/enrollment/RST/wstep", Name = "RequestSecurityToken")]
           RequestSecurityTokenResponseCollection RequestSecurityToken(string TokenType, string RequestType, BinarySecurityToken binarySecurityToken, AdditionalContext additionalContext);

       }

   [DataContract(Namespace = "http://schemas.xmlsoap.org/ws/2006/12/authorization")]
       public class AdditionalContext
       {
           [DataMember]
           public List<ContextItem> contextItem { get; set; }
       }

   [DataContract(Namespace = "http://schemas.xmlsoap.org/ws/2006/12/authorization")]
       public class ContextItem
       {
           [DataMember]
           public string Name { get; set; }

           [DataMember(Name="Value")]
           public object Item { get; set; }

       }

       [XmlRoot("BinarySecurityToken")]
       [DataContract(Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", Name = "BinarySecurityToken")]
       public class BinarySecurityToken
       {
           [XmlAttribute("ValueType")]
           [DataMember(Name = "ValueType",Order=1)]
           public string ValueType { get; set; }

           [XmlAttribute("EncodingType")]
           [DataMember(Name = "EncodingType", Order = 2)]
           public string EncodingType { get; set; }
       }
   }


However, I see that the client connects to the service but the last two parameters of the Operation - BinarySecurityToken and AdditionalContext are null when I check their values in the service. I have traced the client request, and I see the values are sent by the client correctly. The below mentioned is the SOAP body.

XML
<s:Body>
           <wst:RequestSecurityToken>
               <wst:TokenType>http://schemas.microsoft.com/5.0.0.0/ConfigurationManager/Enrollment/DeviceEnrollmentToken</wst:TokenType>
               <wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType>
               <wsse:BinarySecurityToken ValueType="http://schemas.microsoft.com/windows/pki/2009/01/enrollment#PKCS10" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#base64binary">MIICcTCCAV0CAQAwMDEuMCwGA1UEAxMlQj=</wsse:BinarySecurityToken>
               <ac:AdditionalContext xmlns="http://schemas.xmlsoap.org/ws/2006/12/authorization">
                   <ac:ContextItem Name="DeviceType">
                       <ac:Value>MyDevice</ac:Value>
                   </ac:ContextItem>
                   <ac:ContextItem Name="ApplicationVersion">
                       <ac:Value>18.10.6603.101</ac:Value>
                   </ac:ContextItem>
               </ac:AdditionalContext>
           </wst:RequestSecurityToken>
       </s:Body>




The first two parameters are showing up correctly. No idea what is going on.
Posted
Updated 27-Jan-13 23:19pm
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900