Utilizar token de autenticação em API criada por endpoint

Bom dia,

É possível criar algum token de autenticação para acessar as APIs criadas por endpoints/workflow?

Exemplo:

Criei um endpoint que requer autenticação para acessar:

Também criei o token de autenticação do wegnology rest API:

Tentando acessar a API através desse token:

Única forma que eu consegui foi obtendo o cookie de autenticação salvo na experience page depois de ter feito login:


Porém eu precisava acessar a API mesmo sem estar autenticado, pois minha intenção é utilizar a API de uma aplicação no workflow de outra aplicação (ambas da mesma organização), utilizado o HTTP node com autorização do tipo Service Credential:

Qual seria a forma correta de fazer essa requisição com autenticação sem precisar estar logado?

Att,
Gabriel Linhares

Uma forma que encontrei foi alterando o ‘set cookie’ da página de login para gerar um único token que expira em um longo prazo, e salvando este token nos services credentials da outra aplicação:

Existe alguma vulnerabilidade ou algo nesse sentido fazendo dessa forma?

Bom dia @linhares,

Primeiramente, somente para esclarecer, existe uma diferença de escopo de acesso entre os tokens utilizados para autenticação para endpoints de experience e endpoints de APIs da plataforma. No caso, quando é gerado um “Application Token”, ele irá servir somente para autenticar requisições feitas as APIs REST da plataforma.

Nesse caso, para um Experience Endpoint, somente são aceitos JWT tokens gerados a partir de credenciais de Experience User.

No caso, ao se utilizar o Service Credentials, não é possível gerar dinamicamente o JWT Token, pois são aceitos somente valores fixos, e a forma que você fez está correta, com o único problema de ter que ser gerado um token que não expira. Como é uma comunicação interna entre aplicações, onde não há a exposição desse token em um client, não haveria uma vulnerabilidade direta. E caso fosse necessário invalidar esse token, seria necessário invalidar todos os tokens gerados para esse usuário de experience, ou então via console, invalidar os tokens de todos os usuários de experience

Outras formas de se fazer, seria utilizar um endpoint que permitisse gerar tokens a apartir das credenciais do usuário, assim como funciona o fluxo de login, porém ao invés de retornar uma página, seria retornado somente o JWT Token. E esse token poderia ser salvo no storage enquanto ainda for válido, sendo necessário requisitar um novo token, quando o mesmo expirar. Esse fluxo seria um pouco mais complexo, pois há a necessidade de gerenciar o token, para não ter que gerar um novo a cada nova requisição a API.

E também poderiam ser utilizados Webhooks, que suportam basic authetication, permitindo utilizar o método de autenticação Basic do Service Credentials.

Espero ter ajudado.

1 Curtida