JSON Web Signature
# JSON Web Signature

JSON Web Signature (abreviado JWS) es un estándar propuesto por IETF para la firma de JSON arbitrario. Se utiliza como base para una variedad de tecnologías basadas en la web, incluyendo JSON Web Token.

## Propósito

JWS es una forma de autenticar (pero no necesariamente cifrar) información en un formato altamente serializable y legible por máquina. Esto significa que es información, junto con la prueba de que la información no ha cambiado desde que se firmó. Se puede usar para enviar información de un sitio web a otro y está especialmente dirigido a las comunicaciones en la web. Incluso contiene una forma compacta optimizada para aplicaciones como parámetros de consulta de URI.

### Ejemplos

**Comercio web**

JWS puede ser usado para aplicaciones en las que la información firmada digitalmente debe enviarse en un formato legible por máquina, como el comercio electrónico. Por ejemplo, digamos que un usuario llamado Bob está buscando precios de widgets en un sitio web (widgets.com), y desea obtener una cotización en uno de ellos. Entonces, widgets.com podría proporcionarle a Bob un objeto JWS que contenga toda la información relevante sobre el widget, incluyendo el precio, y luego firmarlo usando su clave privada. Entonces Bob tendría una cotización de precio no-repudiable para el producto.

**Acceso a recursos de terceros**

Quizás Widgets.com y WidgetStorage.com tienen una acuerdo en el que WidgetStorage.com aceptará cupones de Widgets.com a cambio de tráfico. Widgets.com podría emitir JWS otorgándole a Bob un 10% de descuento en el sitio WidgetStorage.com. Nuevamente, debido a que los datos están firmados, WidgetStorage puede saber que Widgets.com lo autorizó. Si los datos no estuvieran firmados, Bob podría cambiar su descuento al 50% y nadie podría saberlo simplemente mirando los datos.

## Limitaciones

JWS no incluye cifrado, pero está diseñado para trabajar con cifrado.

A partir de 2015, JWS fue un estándar propuesto y es parte de otros borradores de normas de IETF, y hay un código disponible en la web para implementar el borrador del estándar.

