¿Qué son los tokens de portador y el tipo de token en OAuth 2?

140

Estoy tratando de implementar el flujo de Credenciales de propietario de recursos y contraseña de la especificación OAuth 2. Tengo problemas para comprender el token_typevalor que se devuelve con una respuesta válida. En la especificación todos los ejemplos muestran "token_type":"example"pero dice que debería ser

token_type REQUERIDO. El tipo de token emitido como se describe en la Sección 7.1 . El valor no distingue entre mayúsculas y minúsculas.

¿Alguien puede explicarme esto?

Micah
fuente

Respuestas:

158

token_typees un parámetro en la llamada de generación de token de acceso al servidor de autorización que esencialmente representa cómo se generará un access_token y se presentará para las llamadas de acceso a recursos. Proporciona token_type en la llamada de generación de token de acceso a un servidor de autorización.

Si da Bearer(Valor predeterminado en la mayoría de las implementaciones), access_tokense genera y se le envía de vuelta. Portador puede entenderse simplemente como "dar acceso al portador de este token". Una ficha válida y sin preguntas. Por otro lado, si elige Macy sign_type(predeterminado hmac-sha-1en la mayoría de las implementaciones), el token de acceso se genera y se mantiene como secreto en Key Manager como un atributo, y un secreto encriptado se devuelve comoaccess_token

Sí, puede usar su propia implementación de token_type, pero eso podría no tener mucho sentido ya que los desarrolladores deberán seguir su proceso en lugar de las implementaciones estándar de OAuth.

Abhishek Tyagi
fuente
28
Creo que "dar acceso al portador de este token" hace que sea más fácil de entender. Es el equivalente a emitir un cheque "dar dinero al portador del cheque".
NVM
@NVM Gracias por la sugerencia, sin duda tiene sentido. He actualizado lo mismo.
Abhishek Tyagi
33

Cualquiera puede definir "token_type" como una extensión OAuth 2.0, pero actualmente el tipo de token "portador" es el más común.

https://tools.ietf.org/html/rfc6750

Básicamente eso es lo que Facebook está usando. Sin embargo, su implementación está un poco por detrás de las últimas especificaciones.

Si desea estar más seguro que Facebook (o tan seguro como OAuth 1.0 que tiene "firma"), puede usar el tipo de token "mac".

Sin embargo, será difícil ya que la especificación de Mac todavía está cambiando rápidamente.

https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05

nov matake
fuente
14

Información del encabezado MDN de Mozilla

Token de portador
Un token de seguridad con la propiedad de que cualquier parte en posesión del token (un "portador") puede usar el token de cualquier manera que pueda hacerlo cualquier otra parte en posesión del mismo. El uso de un token de portador no requiere que un portador demuestre la posesión de material de clave criptográfica (prueba de posesión).

El token de portador o el token de actualización lo crea el servidor de autenticación. Cuando un usuario autentica su aplicación (cliente), el servidor de autenticación luego va y genera un token de portador (token de actualización) que luego puede usar para obtener un token de acceso.

El token de portador es normalmente algún tipo de valor críptico creado por el servidor de autenticación, no es aleatorio, se crea en función del usuario que le da acceso y el cliente al que accede su aplicación.

usuario8307736
fuente