O que é um token opaco?

9

E o que significa que eles estão em um "formato proprietário"? Estou lendo sobre os tokens de atualização JWT e eles são opacos, mas não entendo o termo.

sloneorzeszki
fonte

Respostas:

14

Um JWT possui conteúdo legível, como você pode ver, por exemplo, em https://jwt.io/ . Todos podem decodificar o token e ler as informações nele contidas. O formato está documentado na RFC 7519 .

Um token opaco, por outro lado, tem um formato que não se destina a ser lido por você. Somente o emissor conhece o formato.

O significado da palavra já dá uma dica:

opaco / ə (ʊ) ˈpeɪk / adjetivo

incapaz de ser visto através; não é transparente.

Aqui está uma citação de https://auth0.com/docs/tokens :

Tokens opacos: tokens em um formato proprietário que normalmente contêm algum identificador de informações no armazenamento persistente de um servidor. Para validar um token opaco, o destinatário do token precisa chamar o servidor que o emitiu.

Um "token de atualização JWT opaco" é uma contradição conforme a definição acima. O que realmente significa aqui é que, em algumas estruturas JWT, apenas o token de autenticação é um JWT, mas como token de atualização, eles usam tokens opacos.

jps
fonte
Obrigado. Acho que o que me deixou confusa é a parte da assinatura, que é criptografada para não ser legível por si só. Eu também encontrei uma excelente explicação aqui: community.apigee.com/questions/21139/jwt-vs-oauth.html
sloneorzeszki
11
@sloneorzeszki Na explicação que você vinculou, um opaque tokené descrito como uma sequência aleatória que serve apenas como ponteiro para as informações armazenadas no servidor. Esse tipo de token é descrito aqui como reference tokenconsiderando que um opaque tokenpode realmente conter informações criptografadas (legíveis apenas para o emissor original). Portanto, existem definições ligeiramente diferentes das quais devemos estar cientes.
JPS
0

Aqui, o termo "opaco" significa que a string (que serve como token) é como uma referência (em OOPs), ou ponteiro (em C) ou chaves estrangeiras (em DBs relacionais). Você precisa de um conteúdo externo para resolvê-lo.

Simples versus Composto:

A cadeia é uma cadeia "simples", em oposição ao JWS, onde é "composta"; Tem peças "dentro" dele.

Dentro versus Fora:

Você pode extrair uma carga útil (com reivindicações, etc.) dela sem se referir a um servidor ou armazenamento externo, "fora" dessa sequência.

Como um token opaco é uma sequência simples, é apenas uma referência; portanto, naturalmente, seu formato é inteiramente arbitrariamente determinado pelo servidor que o emite (daí o termo "formato proprietário"). A sequência de tokens é determinada no momento da criação do conteúdo subjacente (referido), ou seja, quando é emparelhado (associado) ao conteúdo a que esse token (como referência ou chave estrangeira) se refere.

Sohail Si
fonte