Cabeçalho de autorização OAuth 2.0

91

Desejo desenvolver um SDK que encapsula as funções do OAuth 2.0. Eu verifiquei as diferenças entre o OAuth 1.0 e 2.0 e tenho alguma confusão no cabeçalho de autorização ( 1.0 e 2.0 ), os parâmetros de protocolo OAuth 1.0 podem ser transmitidos usando o cabeçalho HTTP "Autorização", mas não consigo encontrar isso descrito no atual Rascunho do OAuth 2.0.

O OAuth 2.0 oferece suporte a cabeçalhos de autorização?

No OAuth 1.0, seu cabeçalho ficaria assim:

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
fonte
Não respondendo à sua pergunta, mas já existem várias bibliotecas OpenId e OAuth por aí. Tem certeza de que deseja reinventar a roda?
Kane
Olá Kane, Não estou desenvolvendo SDK para OAuth. Só preciso de algumas funções OAuth em meu SDK, então não quero apresentar a biblioteca de terceiros.
JKhuang

Respostas:

205

Para quem procura um exemplo de como passar a autorização OAuth2 (token de acesso) no cabeçalho (em vez de usar uma solicitação ou parâmetro de corpo), veja como isso é feito:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
Jonathan
fonte
32
Para quem encontrou este tópico tentando usar o cabeçalho de autorização com cURL, aqui está o comando: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G
5
Pergunta rápida, pois continuo vendo respostas como esta, mas sem o esclarecimento: se estou fazendo isso em código (via API HTTPRequest), adiciono cabeçalhos à minha solicitação com um nome de cabeçalho e um campo de dados associado. Nesta resposta, qual parte é o nome do cabeçalho e quais são os dados? Ou seja, o cabeçalho está Authorization: Bearercom os 0b...42dados ou o cabeçalho está Authorization:com Bearer 0b...42os dados ou o quê? Obrigado! (A propósito, sou Oauth2, se isso importa.)
Olie
9
Authorizationé o nome do cabeçalho, os dois pontos separam o nome do valor em todos os cabeçalhos de acordo com a seção 4.2 do RFC2616 .
Rick Mac Gillis
35

Você ainda pode usar o cabeçalho Authorization com OAuth 2.0. Há um tipo de portador especificado no cabeçalho de autorização para uso com tokens de portador OAuth (significando que o aplicativo cliente simplesmente tem que apresentar ("suportar") o token). O valor do cabeçalho é o token de acesso que o cliente recebeu do Authorization Server.

Está documentado nesta especificação: https://tools.ietf.org/html/rfc6750#section-2.1

Por exemplo:

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

Onde mF_9.B5f-4.1JqM é seu token de acesso OAuth.

Scott T.
fonte
OAuth 2.0 documenta dois tipos de token de acesso como exemplos: Bearer e MAC ( tools.ietf.org/html/rfc6749#section-7.1 )
Clauds
1
Infelizmente, o MAC nunca foi totalmente padronizado (consulte as especificações de rascunho expirado: tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 ) e não é usado na prática.
Scott T.