Por que o ' Bearer ' é necessário antes do token em ' Autorização em uma solicitação HTTP?

Qual é exatamente a diferença entre os dois cabeçalhos a seguir:

Authorization : Bearer cn389ncoiwuencr vs Authorization : cn389ncoiwuencr 

Todas as fontes que examinei, define o valor do cabeçalho “Autorização” como “Portador” seguido pelo token real. No entanto, não fui capaz de compreender o significado disso. E se eu simplesmente colocar o token no cabeçalho de autorização?

Comentários

  • Existem outros métodos de autenticação http, como básico ou resumo . Suponho que ' é bom ser capaz de distingui-los.
  • A questão é especificamente sobre a autenticação baseada em token, que geralmente é feita após a autenticação básica para que o usuário não ' não precisa fornecer o nome de usuário e a senha em cada solicitação.
  • Eu também tive uma pergunta semelhante. Eu queria escolher um esquema para uma implementação de token de curta duração, que não seja totalmente compatível com Oauth 2.0. Eu queria saber se eu poderia usar Bearer ou qualquer valor não padrão sem ter problemas com a interpretação dos proxies ' e servidores '. O mais próximo que cheguei de encontrar uma resposta foi: stackoverflow.com/questions/7802116/… e stackoverflow.com/questions/8463809/…
  • Os servidores geralmente retornam um token pela mesma rota ou seja, " Autorização: Portador " da resposta HTTP? Ou quase sempre faz parte do corpo da resposta?
  • Esta página de autenticação HTTP no MDN é muito útil para a discussão.

Resposta

O Authorization: <type> <credentials> padrão foi introduzido pelo W3C em HTTP 1.0 , e foi reutilizado em muitos lugares desde então. Muitos servidores da web oferecem suporte a vários métodos de autorização. Nesses casos, enviar apenas o token não é suficiente.

Os sites que usam o formato

Authorization : Bearer cn389ncoiwuencr 

provavelmente estão implementando OAuth 2.0 tokens de portador . A Estrutura de autorização OAuth 2.0 define uma série de outros requisitos para manter a autorização segura, por exemplo, exigindo o uso de HTTPS / TLS.

Se você estiver se integrando a um serviço que está usando OAuth 2.0, é uma boa ideia se familiarizar com a estrutura para que o fluxo que você está usando seja implementado corretamente e evitando vulnerabilidades desnecessárias. Existem vários bons tutoriais disponíveis online.

Comentários

  • I ' Não estou familiarizado com a API do MS Graph, pode ser uma peculiaridade de sua implementação.
  • Isso é o que eu estava pensando. Dado seu conhecimento de Bearer Tokens e tokens em geral, você pode ver alguma segurança implicações pelo fato de que a API aceita o token wi Não é a palavra-chave Bearer?
  • Na verdade não, mas concordo com um comentário nessa pergunta – se a implementação deles difere neste ponto, o que mais é diferente? Dito isso, há várias implementações semelhantes a OAuth por aí que se desviam dos RFCs. Isso não significa automaticamente que suas implementações são menos seguras.

Resposta

Muito antes da autorização do portador, este cabeçalho foi usado para autenticação básica . Para interoperabilidade, o uso desses cabeçalhos é regido pelas normas W3C, então, mesmo se você estiver lendo e escrevendo o cabeçalho, você deve segui-los. O Bearer distingue o tipo de autorização que você está usando, por isso é importante.

Resposta

Um Bearer Token é definido no cabeçalho de autorização de cada solicitação HTTP de ação embutida e o próprio Bearer determina o tipo de autenticação.

Ref https://developers.google.com/gmail/markup/actions/verifying-bearer-tokens

Comentários

  • Esta resposta é específica para desenvolvedores de gmail, não para todos os desenvolvedores da web. Uma ' ação ' é uma conceito do gmail.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *