El aud
reclamo de JWT (audiencia)
Según RFC 7519 :
La afirmación "aud" (audiencia) identifica a los destinatarios a los que está destinado el JWT. Cada director destinado a procesar el JWT DEBE identificarse con un valor en el reclamo de audiencia. Si el principal que procesa el reclamo no se identifica con un valor en el reclamo "aud" cuando este reclamo está presente, entonces el JWT DEBE ser rechazado. En el caso general, el valor "aud" es una matriz de cadenas que distinguen entre mayúsculas y minúsculas, cada una de las cuales contiene un valor StringOrURI. En el caso especial cuando el JWT tiene una audiencia, el valor "aud" PUEDE ser una única cadena sensible a mayúsculas y minúsculas que contiene un valor StringOrURI. La interpretación de los valores de la audiencia generalmente es específica de la aplicación.
El uso de esta afirmación es OPCIONAL.
La aud
afirmación Audience ( ) tal como se define en la especificación es genérica y específica de la aplicación. El uso previsto es identificar los destinatarios previstos del token. Lo que significa un destinatario es específico de la aplicación. Un valor de audiencia es una lista de cadenas o puede ser una sola cadena si solo hay un aud
reclamo. El creador del token no hace cumplir que aud
esté validado correctamente, la responsabilidad es del destinatario de determinar si se debe utilizar el token.
Cualquiera que sea el valor, cuando un destinatario está validando el JWT y desea validar que el token estaba destinado a ser utilizado para sus fines, DEBE determinar qué valor se aud
identifica a sí mismo, y el token solo debe validar si la identificación declarada del destinatario es presente en la aud
reclamación. No importa si se trata de una URL o de alguna otra cadena específica de la aplicación. Por ejemplo, si mi sistema decide identificarse aud
con la cadena: api3.app.com
entonces solo debería aceptar el JWT si el aud
reclamo contiene api3.app.com
en su lista de valores de audiencia.
Por supuesto, los destinatarios pueden optar por ignorar aud
, por lo que esto solo es útil si un destinatario desea una validación positiva de que el token se creó específicamente para él.
Mi interpretación basada en la especificación es que la aud
afirmación es útil para crear JWT especialmente diseñados que solo son válidos para ciertos propósitos. Para un sistema, esto puede significar que desea que un token sea válido para algunas funciones, pero no válido para otras. Podrías emitir tokens que estén restringidos solo a una determinada "audiencia", mientras sigues usando las mismas claves y algoritmo de validación.
Dado que en el caso típico un JWT es generado por un servicio confiable y utilizado por otros sistemas confiables (sistemas que no quieren usar tokens inválidos), estos sistemas simplemente necesitan coordinar los valores que usarán.
Por supuesto, aud
es completamente opcional y puede ignorarse si su caso de uso no lo justifica. Si no desea restringir los tokens para que sean utilizados por audiencias específicas, o ninguno de sus sistemas realmente validará el aud
token, entonces es inútil.
Ejemplo: tokens de acceso y actualización
Un ejemplo artificial (aunque simple) en el que puedo pensar es que tal vez queremos usar JWT para acceder y actualizar tokens sin tener que implementar claves de cifrado y algoritmos separados, pero simplemente queremos asegurarnos de que los tokens de acceso no se validen como tokens de actualización, o viceversa. -versa.
Al usar aud
, podemos especificar un reclamo de refresh
tokens de actualización y un reclamo de access
tokens de acceso al crear estos tokens. Cuando se realiza una solicitud para obtener un nuevo token de acceso de un token de actualización, debemos validar que el token de actualización era un token de actualización genuino. La aud
validación descrita anteriormente nos dirá si el token era en realidad un token de actualización válido al buscar específicamente un reclamo de refresh
in aud
.
ID de cliente de OAuth frente a aud
reclamación de JWT
El ID de cliente de OAuth no está relacionado en absoluto y no tiene una correlación directa con los aud
reclamos de JWT . Desde la perspectiva de OAuth, los tokens son objetos opacos.
La aplicación que acepta estos tokens es responsable de analizar y validar el significado de estos tokens. No veo mucho valor en especificar el ID de cliente de OAuth dentro de un aud
reclamo de JWT .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.