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.

Rutwick Gangurde
fonte
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.

Rutwick Gangurde
fonte
0

A ativação do logon único no WordPress levou mais de 18 horas de luta, mas pode levar apenas alguns minutos:

Basicamente, você desejará usar https://wordpress.org/plugins/wp-force-login/ e uma versão modificada de https://as.wordpress.org/plugins/jwt-authenticator/ e criar uma autenticação endpoint protegido em seu site principal que gera um JWT (JSON Web Token) e redireciona de volta para o URL especial do seu site WordPress.

Veja o código completo aqui .

Ryan
fonte