Como decodificar a carga útil do JWT usando JavaScript? Sem uma biblioteca. Portanto, o token retorna apenas um objeto de carga útil que pode ser consumido pelo meu aplicativo front-end.
Exemplo de token: xxxxxxxxx.XXXXXXXX.xxxxxxxx
E o resultado é a carga útil:
{exp: 10012016 name: john doe, scope:['admin']}
javascript
jwt
Chrisk8er
fonte
fonte
Respostas:
Função de analisador JWT de texto unicode de trabalho:
fonte
JSON.parse(window.atob(base64))
para fazê-la funcionar. Sóreturn JSON.parse(atob(base64));
entãopostman.setEnvironmentVariable("userId", parseJwt(jsonData.access_token));
"access_token" é, no meu caso, a chave do valor do token em resposta (pode ser diferente no seu caso).var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
jwt-decode
módulo porque é pequeno, mas faz um manuseio um pouco mais melhor.Função simples com try - catch
Obrigado!
fonte
atob
conheceu problemas unicodeVocê pode usar o jwt-decode , para escrever:
fonte
você pode usar a
atob()
função javascript pura para decodificar o token em uma string:ou analise-o diretamente em um objeto json:
leia sobre
atob()
ebtoa()
funções JavaScript embutidas Codificação e decodificação Base64 - APIs da Web | MDN .fonte
O @Peheje funcionará, mas você terá problemas com o Unicode. Para corrigi-lo, uso o código em https://stackoverflow.com/a/30106551/5277071 ;
fonte
Como o objeto "window" não está presente no ambiente nodejs, podemos usar as seguintes linhas de código:
Está funcionando perfeitamente para mim. Espero que ajude.
fonte
Se estiver usando o nó, talvez seja necessário usar o pacote de buffer:
fonte
Eu uso essa função para obter carga útil, cabeçalho, exp (tempo de expiração), iat (emitido em) com base nesta resposta
fonte
todos os recursos do jwt.io não suportam todos os idiomas. Nos NodeJs você pode usar
fonte
Encontrei esse código em jwt.io e funciona bem.
Em alguns casos (determinadas plataformas de desenvolvimento),
a melhor resposta (por enquanto) enfrenta um problema de comprimento base64 inválido.
Então, eu precisava de uma maneira mais estável.
Espero que ajude você.
fonte
Guy e Peheje já responderam à pergunta. Para um iniciante como eu, foi útil também ter a linha de importação definida no exemplo.
Também levei alguns minutos para descobrir que o token é o conjunto completo de credenciais que são postadas de volta (o token JWT inteiro, não apenas a parte idToken). Simples, uma vez que você conhece ..
fonte
Solução NodeJS simples para decodificar um JSON Web Token (JWT)
fonte
Resposta baseada no GitHub - auth0 / jwt-decode . Alterou a entrada / saída para incluir a divisão de seqüência de caracteres e o objeto de retorno {cabeçalho, carga útil, assinatura} para que você possa passar o token inteiro.
fonte
Aqui está uma solução mais rica em recursos que acabei de criar após estudar esta pergunta:
Aqui estão alguns exemplos de uso:
Não consegui tornar esse executável na ferramenta de trecho de código StackOverflow, mas aqui está aproximadamente o que você veria se executasse esse código:
Eu fiz a
parseJwt
função sempre retornar um objeto (até certo ponto por razões de digitação estática).Isso permite que você utilize sintaxe como:
Em seguida, você pode testar em tempo de execução tipos específicos de erros e evitar colisões de nomes.
Se alguém puder pensar em algum esforço baixo, alterações de alto valor nesse código, fique à vontade para editar minha resposta em benefício de
next(person)
.fonte
Com base nas respostas aqui e aqui :
fonte
Executando o Javascript node.js express, primeiro tive que instalar o pacote da seguinte maneira:
então, no meu código app.js, obtenha o pacote:
Em seguida, execute o código:
Então a mágica:
fonte