Proof key?

Jan 15, 2010 at 6:43 PM

In chapter 2 of the code 5 drop you said:


"...The token includes something called a proof key. This is a symmetric key randomly generated by the issuer and included as part of the RSTR so that the client gets a copy as well.

Now it's up to the client to send the token to the Web service in the <Security> header of the SOAP envelope. The client must sign the SOAP headers (one of which is a timestamp) with the proof key to show that it knows the key. This extra cryptographic evidence further assures the Web service that the caller was, indeed, the one who was issued the token in the first place..."

How does the service valdiate the proof key signature if the STS randomely created the proof key? Is this per- RST or is the proof key persistant and created when the RP is trusted to the STS? By random do you mean, randomly created when the trust is established?

Or does the RP FAM actually call out to the STS when validating the token to verify the proof key?

Jan 16, 2010 at 6:02 PM

One copy of the proof key is inside the SAML token - this token is signed by the issuer and encrypted for the RP.

Another copy is in the RSTR going back to the client.

When the client signs something with that proof key - he proofs that he was the one who requested the token in the first place - because he proofs knowledge of that key.

Makes sense?


Jan 16, 2010 at 11:00 PM
Edited Jan 16, 2010 at 11:01 PM

These 2 other articles might also help:



Mar 12, 2010 at 10:49 PM

If the Proof key is a symmetric key

, how can it be used for signing? Or does signing mean encryption in this case?

Mar 16, 2010 at 6:15 PM

You can use symmetric keys for signing - e.g. using the HMACSHA256 algorithm.

Mar 28, 2010 at 1:18 PM

So, is HMAC SHA 256 what is used to sign the message request? thanks