O que são tokens de portador e token_type no OAuth 2?

140

Estou tentando implementar o fluxo Credenciais do proprietário e da senha do recurso da especificação do OAuth 2. Estou tendo problemas para entender o token_typevalor que é enviado de volta com uma resposta válida. Na especificação, todos os exemplos são mostrados, "token_type":"example"mas afirma que deve ser

token_type NECESSÁRIO. O tipo do token emitido conforme descrito na Seção 7.1 . O valor não diferencia maiúsculas de minúsculas.

Alguém pode explicar isso para mim?

Micah
fonte

Respostas:

158

token_typeé um parâmetro no Access Token gerar chamada para o servidor de autorização que representa essencialmente como um access_token será gerado e apresentado para chamadas de acesso a recursos. Você fornece token_type na chamada de geração de token de acesso a um servidor de autorização.

Se você fornecer Bearer(Padrão na maioria das implementações), um access_tokené gerado e enviado de volta para você. Portador pode ser simplesmente entendido como "conceder acesso ao portador desse token". Um token válido e nenhuma pergunta. Por outro lado, se você escolher Mace sign_type(padrão hmac-sha-1na maioria das implementações), o token de acesso é gerado e mantido em segredo no Key Manager como um atributo, e um segredo criptografado é enviado de volta comoaccess_token

Sim, você pode usar sua própria implementação de token_type, mas isso pode não fazer muito sentido, pois os desenvolvedores precisarão seguir seu processo, em vez de implementações padrão do OAuth.

Abhishek Tyagi
fonte
28
Acho que "conceder acesso ao portador desse token" facilita a compreensão. É o equivalente a emitir um cheque "dar dinheiro ao portador do cheque".
NVM
@NVM Obrigado pela sugestão, certamente faz sentido. Eu atualizei o mesmo.
Abhishek Tyagi 30/03
33

Qualquer pessoa pode definir "token_type" como uma extensão do OAuth 2.0, mas atualmente o tipo de token "portador" é o mais comum.

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

Basicamente, é isso que o Facebook está usando. Sua implementação está um pouco atrasada em relação às especificações mais recentes.

Se você deseja ser mais seguro que o Facebook (ou tão seguro quanto o OAuth 1.0, que possui "assinatura"), pode usar o tipo de token "mac".

No entanto, será difícil, já que as especificações do mac ainda estão mudando rapidamente.

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

nov matake
fonte
14

Informações do cabeçalho do Mozilla MDN

Token do portador
Um token de segurança com a propriedade de que qualquer parte em posse do token (um "portador") pode usá-lo da maneira que qualquer outra parte em posse dele possa. O uso de um token de portador não exige que o portador comprove a posse do material da chave criptográfica (prova de posse).

O token do portador ou o token de atualização são criados para você pelo servidor de autenticação. Quando um usuário autentica seu aplicativo (cliente), o servidor de autenticação acessa e gera um token de atualização (token de atualização) que você pode usar para obter um token de acesso.

O token do portador normalmente é algum tipo de valor enigmático criado pelo servidor de autenticação; não é aleatório, é criado com base no usuário que lhe dá acesso e no cliente que seu aplicativo obtém acesso.

user8307736
fonte