La marca de tiempo no está encriptada y debe estar en el encabezado de soap.
<wsu:Timestamp wsu:Id="timestamp">
<wsu:Created>2014-07-01T11:30:28.123+05:30</wsu:Created>
<wsu:Expires>2014-07-01T11:35:28.123+05:30</wsu:Expires>
</wsu:Timestamp>
Si el tiempo de expiración es poco después del tiempo creado, puede minimizar el ataque de reproducción. En realidad, no es solo la marca de tiempo. Debe agregar el resumen de la marca de tiempo a la sección SignedInfo.
<ds:Reference URI="#timestamp">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces PrefixList="wsse soap" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>TGgFBvglhb+jZCvjV0+oVnNaivpVBp5iVbJEqkTfaCU=</ds:DigestValue>
</ds:Reference>
Por lo tanto, en el servidor estos compendios deben coincidir. Incluso eso no es todo, entonces usted firma toda la información con la clave privada y agrega el valor de la firma al elemento Firma de la siguiente manera.
<ds:SignatureValue>jdO5GIZ9v1VTngFZcMpz5hz62RwToq2W24A9KhJ5JNySZW1AHhd3s+eTduZZPD0Ok6Wtgzu5kquK
IinPdi5IbGjlg6mXGDbVkLd79RBdnbzFxsJFBtRr9r3mQZp9xfU7zSJW3kbizz6Jjk3h+S2nNbUu
f7rFrNN53ciRtj9RlKzQzmW7BDaFuq18DUfcr70muSkmd4DIqxYDGScjEjgIqLE2pYwIdDDRUGPD
MuwuIN3DgB051QwcE75SVrKBKsTHmFADmN3nKzmQ/JUQuLot0vW6WUFRMLVlAcl5C09SGPOcpow2
kjbuWx/bI7Aj4nAaAnmAYsWKIA3xVao+nPBOWmM0Lg7kpC4Dr5DwahmjH0/78aVUU23DEiMc0kR0
YDg5CxD8MUuj24w8tAjuzoHrvcsIYw+vWCTKvucnXwTlZ+K3QFB6gkct2zVOyQeYaPpkAnmPYS3W
DDpNmsx3lDcNr+5QWTsUbSQaFDddjHT/zoOJ8+iZKY/RujOI5vfXVwgN</ds:SignatureValue>
Ahora podemos asegurarnos de que los ataques de repetición no sean posibles. Como cualquier otra persona no puede tener la misma clave privada, no hay manera de alterar las marcas de tiempo y aún así tener una firma válida.
¿Está encriptado el valor de la marca de tiempo? ¿Cómo valida el servidor que la solicitud entrante tiene una marca de tiempo válida y está dentro del umbral –
@Kunal? Como dije, el cliente modifica los parámetros de entrada y envía el hash junto con las entradas. Los servidores hash como suma de comprobación contra la manipulación. El servidor usa la clave privada que corresponde a la clave pública de los usuarios para computar su propio hash de los parámetros. Si los dos valores hash coinciden, entonces sabrá que los valores proporcionados son legítimos y no han sido manipulados. – Josh
@Kunal, ninguna marca de tiempo no está encriptada y debe estar en el encabezado de soap. – Don