Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>To create the nonce, I had to change a few things</p> <p>First, added a custom binding in my config</p> <pre><code>&lt;system.serviceModel&gt; &lt;bindings&gt; &lt;customBinding&gt; &lt;binding name="myCustomBindingConfig"&gt; &lt;security includeTimestamp="false" authenticationMode="UserNameOverTransport" defaultAlgorithmSuite="Basic256" requireDerivedKeys="true" messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"&gt; &lt;/security&gt; &lt;textMessageEncoding messageVersion="Soap11"&gt;&lt;/textMessageEncoding&gt; &lt;httpsTransport maxReceivedMessageSize="2000000000" /&gt; &lt;/binding&gt; &lt;/customBinding&gt; &lt;/bindings&gt; &lt;/system.serviceModel&gt; &lt;client&gt; &lt;endpoint address="https://..." [other tags] binding="customBinding" bindingConfiguration="OrangeLeapCustomBindingConfig"/&gt; &lt;/client&gt; </code></pre> <p>Then, take this code found here: <a href="http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/4df3354f-0627-42d9-b5fb-6e880b60f8ee" rel="noreferrer">http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/4df3354f-0627-42d9-b5fb-6e880b60f8ee</a> and modify it to create the nonce (just a random hash, base-64 encoded)</p> <pre><code>protected override void WriteTokenCore(System.Xml.XmlWriter writer, System.IdentityModel.Tokens.SecurityToken token) { Random r = new Random(); string tokennamespace = "o"; DateTime created = DateTime.Now; string createdStr = created.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); string nonce = Convert.ToBase64String(Encoding.ASCII.GetBytes(SHA1Encrypt(created + r.Next().ToString()))); System.IdentityModel.Tokens.UserNameSecurityToken unToken = (System.IdentityModel.Tokens.UserNameSecurityToken)token; writer.WriteRaw(String.Format( "&lt;{0}:UsernameToken u:Id=\"" + token.Id + "\" xmlns:u=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"&gt;" + "&lt;{0}:Username&gt;" + unToken.UserName + "&lt;/{0}:Username&gt;" + "&lt;{0}:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\"&gt;" + unToken.Password + "&lt;/{0}:Password&gt;" + "&lt;{0}:Nonce EncodingType=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary\"&gt;" + nonce + "&lt;/{0}:Nonce&gt;" + "&lt;u:Created&gt;" + createdStr + "&lt;/u:Created&gt;&lt;/{0}:UsernameToken&gt;", tokennamespace)); } protected String ByteArrayToString(byte[] inputArray) { StringBuilder output = new StringBuilder(""); for (int i = 0; i &lt; inputArray.Length; i++) { output.Append(inputArray[i].ToString("X2")); } return output.ToString(); } protected String SHA1Encrypt(String phrase) { UTF8Encoding encoder = new UTF8Encoding(); SHA1CryptoServiceProvider sha1Hasher = new SHA1CryptoServiceProvider(); byte[] hashedDataBytes = sha1Hasher.ComputeHash(encoder.GetBytes(phrase)); return ByteArrayToString(hashedDataBytes); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload