security - ejemplos - Mejores prácticas de autenticación de Microservicios y seguridad(OAuth 2.0 y OpenIdConnect)
session oauth2 (2)
Creo que el beneficio principal (que el artículo quería transmitir, aparte de la divulgación de información) de usar el token de referencia (tokens opacos) sobre el valor porcentual (JWT) es la capacidad de controlar los tokens de acceso cuando se distribuye fuera de la red.
En otras palabras, si emitimos tokens de acceso como JWT fuera de la red, entonces es difícil revocar el acceso durante una emergencia (cuando un usuario es desconectado / desconectado, pierde teléfonos móviles, etc.). Pero los tokens de referencia se pueden revocar fácilmente ya que es un puntero dentro de los límites AS.
Una explicación más detallada sobre esto está disponible aquí .
Hay varias formas de crear autenticación en micro-servicios. Sin embargo, es muy popular usar tokens JWT y el protocolo OAuth junto con la capa de identidad de OpenID Connect.
En este tutorial que explica cómo se puede lograr, hay un consejo:
Pase por referencia cuando los tokens tengan que abandonar su red, y luego conviértalos en tokens de valor por valor cuando ingresen a su espacio. Haz esta conversión en tu puerta de enlace API.
Sin embargo, no está claro para mí cuál es la razón detrás de esto. Sospecho que podría deberse a algunos beneficios de seguridad (no dar la posibilidad al cliente de leer información específica). Porque en el token de JWT puede ser información sobre roles / permisos. Pero para este propósito, token también se puede encriptar.
Otra razón podría ser que el token JWT es demasiado grande y no debe llevar este token cada vez que se use dicho método. (o si el token JWT está almacenado en una cookie, tiene límites de tamaño).
No he visto ninguna información de que la autenticación de tokens JWT esté en peligro y es una mala práctica mantenerla en el cliente (en el navegador).
Por otro lado, veo que Ping Identity también usa el método de pase por referencia . ¿Puedes ayudarme a entender el razonamiento detrás de esto?
Ambas opciones son válidas y, como siempre, es el escenario exacto en el que desea aplicarlas, que dictará la más adecuada . Como suele ser el caso, cada opción tendrá sus pros y sus contras, y usted ya mencionó algunas, así que haré todo lo posible para agregar algo nuevo a la discusión.
La principal diferencia está en los contenidos, el valor por by contendrá los valores reales mientras que la referencia es solo una secuencia aleatoria de bits. Si desea representar información confidencial en el token, esto puede inclinar la balanza a favor de los tokens de referencia.
Es cierto que si utiliza JWT puede encriptarlos para garantizar la confidencialidad, pero esto agrega una capa significativa de complejidad y la compatibilidad con el cifrado JWT en las bibliotecas disponibles probablemente no sea tan buena como el soporte para firmas dado que el cifrado no tiene un uso generalizado similar.
En cuanto al tamaño, no creo que este deba ser un factor decisivo. Sí, si vas con tokens de valor por valor, debes mantenerlos lo suficientemente pequeños como para no causar una sobrecarga significativa en el canal, pero no debes elegir uno solo debido a esta restricción.
Una cosa que no mencionó, pero creo que es importante es que los tokens de referencia parecen más adecuados para situaciones en las que el servidor de autorización y el servidor de recursos pertenecen a la misma entidad . Es verdad que ya existe un estándar para cubrir la introspección de tokens, de modo que un servidor de recursos externo pueda consultar información sobre un token de referencia de forma interoperable. Sin embargo, sigue siendo cierto que, cuando ambos actores se encuentran dentro del mismo límite de seguridad, los tokens de referencia deberían ser más fáciles de escalar e implementar.
La sugerencia sobre el artículo también es interesante, se reduce la sobrecarga en la red externa y no hay problemas con la divulgación de información y luego se actualiza a tokens de valor en un lugar central, lo que significa que todos los demás servicios pueden beneficiarse de la simplicidad de tener la información requerida ya dentro del token.
En resumen, si la revelación de información es un problema para usted, probablemente buscará tokens de referencia para no tomar el costo del cifrado JWT; de lo contrario, podría hacer la vida más simple para usted e ir con fichas de valor.