Boas práticas no uso das URL’s de Callback para identificar o seu cliente
CONTEXTO
Muitos de nossos parceiros de integração utilizam subdomínios ou compõem a URL de suas apps com a identificação do cliente.
Exemplo:
https://meucliente1.minhaapp.com.br
https://www.minhaapp.com.br/meucliente1
Muitas dúvidas surgem sobre o que fazer ou quais são as boas práticas para identificar o cliente no processo de integração entre a app e o RD Station Marketing.
Em alguns casos são cadastradas uma URL’s de Callback para cada cliente, porém este processo não é escalável. (Imagina cadastrar uma nova url de callback a cada novo cliente que entra em sua plataforma...)
Exemplo:
https://meucliente1.minhaapp.com.br/rdstation/auth/callback
https://meucliente2.minhaapp.com.br/rdstation/auth/callback
https://meucliente3.minhaapp.com.br/rdstation/auth/callback
Em outros casos existem tentativas de utilizar wildcards, mas esta abordagem é incompatível com o padrão OAuth2 e ‘quebra’ o processo de redirecionamento durante o processo de autenticação.
Exemplo:
https://*.minhaapp.com.br/rdstation/auth/callback
BOAS PRÁTICAS
Como fazer? Qual é a solução?
Simples! Basta enviar o parâmetro state com a identificação do seu cliente, no início do flow de autorização :)
Mas como?
1- Acesse o nosso Publisher e cadastre uma única URL de Callback para sua app:
Exemplo:
2- No flow de autorização, adicione o parâmetro state, com um valor que identifique(*) o seu cliente unicamente.
Exemplo:
* Caso precise identificar o cliente com mais de um valor, você poderá atribuir ao campo state um valor no formato Base64 Encoded json, que contenha os atributos desejados. (Atenção quanto ao tamanho máximo da URL!)
Exemplo:
{
“customer”: “meucliente1”,
“identifier”: “2020”
}
3- Após o processo de login e confirmação de acesso, com a URL de Callback estarão presentes os parâmetros code e state. (O valor do parâmetro state será o mesmo enviado no início do flow)
Legal, mas o que faço depois?
Considere o parâmetro state retornado junto à URL de Callback, para redirecionar o seu cliente dentro de sua plataforma :)
Exemplo: