Encabezado de autorización de OAuth 2.0

91

Quiero desarrollar un SDK que encapsule las funciones de OAuth 2.0. He comprobado las diferencias entre OAuth 1.0 y 2.0, y tengo cierta confusión en el encabezado de autorización ( 1.0 y 2.0 ), los parámetros del protocolo OAuth 1.0 se pueden transmitir utilizando el encabezado HTTP "Autorización", pero no puedo encontrar esto descrito en la actual Borrador de OAuth 2.0.

¿OAuth 2.0 admite encabezados de autorización?

En OAuth 1.0, su encabezado se vería así:

Authorization: OAuth realm="Example",
    oauth_consumer_key="0685bd9184jfhq22",
    oauth_token="ad180jjd733klru7",
    oauth_signature_method="HMAC-SHA1",
    oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
    oauth_timestamp="137131200",
    oauth_nonce="4572616e48616d6d65724c61686176",
    oauth_version="1.0"
JKhuang
fuente
No respondo a su pregunta, pero ya hay una serie de bibliotecas OpenId y OAuth, ¿está seguro de que desea reinventar la rueda?
Kane
Hola Kane, no estoy desarrollando SDK para OAuth, solo necesito alguna función OAuth en mi SDK, por lo que no quiero presentar una biblioteca de tercera parte.
JKhuang

Respuestas:

205

Para aquellos que buscan un ejemplo de cómo pasar la autorización OAuth2 (token de acceso) en el encabezado (en lugar de usar una solicitud o un parámetro de cuerpo), así es como se hace:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
Jonathan
fuente
32
Para cualquiera que se haya encontrado con este hilo tratando de usar el encabezado de autorización con cURL, aquí está el comando: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G
5
Pregunta rápida, ya que sigo viendo respuestas como esta, pero sin la aclaración: si estoy haciendo esto en código (a través de HTTPRequest API), agrego encabezados a mi solicitud con un nombre de encabezado y un campo de datos asociado. En esta respuesta, ¿qué parte es el nombre del encabezado y cuál los datos? Es decir, es el encabezado Authorization: Bearercon 0b...42como datos, o es el encabezado Authorization:con Bearer 0b...42como los datos, o qué? ¡Gracias! (Por cierto, soy Oauth2, si importa.)
Olie
9
Authorizationes el nombre del encabezado, los dos puntos separan el nombre del valor en todos los encabezados según la sección 4.2 de RFC2616 .
Rick Mac Gillis
35

Aún puede usar el encabezado de autorización con OAuth 2.0. Hay un tipo de portador especificado en el encabezado de Autorización para usar con tokens de portador de OAuth (lo que significa que la aplicación cliente simplemente tiene que presentar ("llevar") el token). El valor del encabezado es el token de acceso que el cliente recibió del servidor de autorización.

Está documentado en esta especificación: https://tools.ietf.org/html/rfc6750#section-2.1

P.ej:

   GET /resource HTTP/1.1
   Host: server.example.com
   Authorization: Bearer mF_9.B5f-4.1JqM

Donde mF_9.B5f-4.1JqM es su token de acceso OAuth.

Scott T.
fuente
OAuth 2.0 documenta dos tipos de token de acceso como ejemplos: Portador y MAC ( tools.ietf.org/html/rfc6749#section-7.1 )
Clauds
1
Desafortunadamente, MAC nunca se estandarizó por completo (consulte la especificación preliminar caducada: tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 ) y no se usa en la práctica.
Scott T.