Autenticação JWT com WP - Abordagem


8

Estamos usando o JWT ( JSON Web Token ) para autenticar nosso aplicativo WordPress com um serviço externo. O fluxo atual em que estamos pensando é assim:

  1. O usuário entra no site pai
  2. O site pai envia uma solicitação POST com as informações do usuário e o token JWT para o site WordPress
  3. O site WP armazena o token JWT
  4. O token é verificado quanto à expiração toda vez que o usuário visita uma nova página e, se o token expirar, o usuário será redirecionado ao site pai para efetuar login novamente.

Minhas perguntas:

  1. É este o caminho certo?
  2. Como armazeno o token JWT? Um biscoito? Ou no banco de dados, com as informações do usuário como um identificador exclusivo? Nota: Os usuários não serão registrados no site do WP.
  3. Como verifico a validade?

Há um plug-in WP para o JWT, mas não há documentação para isso, portanto, não tenho certeza se ele servirá ao meu propósito.


hmmm wtf é jwt?
Mark Kaplun

Adicionados links relevantes. Verifica.
Rutwick Gangurde

ok, agora eu sei o que é JWT, ainda não entendi a pergunta e por que é específica para o wordpress. Não existe um guia de práticas recomendadas para isso? Enfim plugin / recomendações da biblioteca estão off-topic ....
Mark Kaplun

1
Não quero uma recomendação de plug-in, estou escrevendo meu próprio código. Removida a última linha que o levou a pensar assim.
Rutwick Gangurde

Respostas:


8

Isso apareceu como uma notificação devido ao voto positivo. Aqui está como eu resolvi isso.

  1. O terminal codificado no aplicativo com o qual devo autenticar prepara o token.
  2. O token deve estar no formato especificado.
  3. Em seguida, deve ser codificado na base 64 e criptografado por hash.
  4. O wp_initmanipulador deve ser usado para manipular a solicitação POST enviada pelo terminal para extrair o token.
  5. A chave será compartilhada de outra maneira, usada para descriptografia.
  6. Depois que o token for extraído, compare-o com um token gerado localmente com as mesmas informações.
  7. Armazene-o em um cookie e verifique-o em todos os acessos à página. Você pode expirar depois de um tempo ou continuar aumentando o intervalo de tempo em cada acesso à página.

O terminal pode estar em qualquer idioma. Além disso, este é o fluxo geral, você pode usá-lo onde quiser.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.