El audreclamo 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 audafirmació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 audreclamo. El creador del token no hace cumplir que audesté 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 audidentifica a sí mismo, y el token solo debe validar si la identificación declarada del destinatario es presente en la audreclamació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 audcon la cadena: api3.app.comentonces solo debería aceptar el JWT si el audreclamo contiene api3.app.comen 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 audafirmació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, audes 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 audtoken, 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 refreshtokens de actualización y un reclamo de accesstokens 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 audvalidació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 refreshin aud.
ID de cliente de OAuth frente a audreclamación de JWT
El ID de cliente de OAuth no está relacionado en absoluto y no tiene una correlación directa con los audreclamos 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 audreclamo de JWT .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.