A autorização por token implícito é utilizada no Forleven para permitir que desenvolvedores terceiros possam realizar a integração com o Forleven de suas aplicações, recebendo o token de acesso do usuário que realizou a autorização.
Como é o fluxo ?
O fluxo para obter o token de autorização é bem simples, você precisa informar apenas o seu client_id e fazer o redirecionamento para o nosso servidor de autorização http://auth.forleven.com segue abaixo uma explicação mais detalhada:
Link com todos os tipos de autorização do OAuth2:
https://www.digitalocean.com/community/tutorials/uma-introducao-ao-oauth-2-pt
Autorização do usuário:
Para sua aplicação realizar a requisições ao Forleven será necessário que o usuário realizar autenticação a sua conta, este digitando seu usuário e senha, conforme a imagem abaixo:
Para fazer esta requisição você precisará adicionar informações da sua aplicação na URL de autorização do Forleven, ficando similar ao link abaixo:
https://auth.forleven.com/oauth/authorize?response_type=token&redirect_uri=https://SEUSITE.COM.BR&client_id=SEU_CLIENT_ID&id_institution=SEU_ID_INSTITUTION
Tanto a REDIRECT_URI precisa ser previamente autorizado por nosso equipe de suporte e o CLIENT_ID você receberá quando esta autorização for realizada, somente após isso que você poderá iniciar o desenvolvimento de sua integração.
Redirecionamento para sua aplicação:
Após o usuário realizar a autorização este será redirecionado para a sua REDIRECT_URI que sua aplicação enviou na url do tópico acima. Agora será necessário que você extrair o token de acesso do usuário em sua url de retorno:
http://seusite.com.br#access_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJnZXJvdWRvIiwic2NvcGUiOlsib3BlbmlkIl0sImlkX2xvZ2luIjoxNDcxNTUsImlkX3VzZXIiOjE2NzQ2MCwiZXhwIjoxNTUxMjI2MjYzLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiMTk0MDVhZTYtNTU4OS00MWMxLTljNjAtODc3ZjFiNmM1YmI1IiwiY2xpZW50X2lkIjoic3R1ZGVudGNsaWVudGlkIn0.R56jXQv1M5ikQ8dangRdWNeSmsNyextRdtinu1GgpPgS7zNqky99AdJpJvaRoD-hKBX92ksTprRlPOpt3bkiGpxAnOpUXvSVzxc4FEKQrzn1aSWSIx5SXKDj9NIE2kLDk1nmraIkZa7DhjnA5HvbpWxVYG9rlu0EJmfD7ynD868WBpMFbGSWHF_dxxlV91OWYiDmyBdZuiZ8Lmh2o7-cDgOr91IoyoyOIYPKNANZP2nohHP3aM6I1WQS8P5GdauWLecR9WuivzjJj4yojDfPj8cBdxnxTP51Lb5OVX34OMow8hL8_12KbM3yMLCkapGZvdCfEfx9ViGxJcYvZQfhsw&token_type=bearer&expires_in=14399&scope=openid&id_login=147155&id_user=167460&jti=19405ae6-5589-41c1-9c60-877f1b6c5bb5
Quando o usuário terá que digitar usuário/email e senha?
O usuário precisará digitar apenas se não realizou nenhuma autorização recentemente, caso ele já tenha feito esta autorização ele verá apenas o redirecionamento de página para o Forleven e será instantaneamente redirecionado de volta para sua aplicação com o token de acesso.
Sugestão de código:
Segue abaixo uma sugestão nossa de código para você conferir em sua aplicação se o token de acesso já existe e caso não existe você requisitar para que o usuário realizar a autorização junto ao Forleven. Você é livre para customizar este código da maneira que quiser, sendo este código apenas uma sugestão.
// declaração do client id var settings = { 'forleven_auth': 'https://auth.forleven.com', 'client_id': 'cole aqui seu client id' } var args = window.location.hash.split('&').filter(function(el) { return el !== null && el.length > 0 }) // verifica se não existe um token de acesso previamente armazenado e se existe um token de acesso na url if (!window.sessionStorage.access_token || args && args.length > 0) { // se existe na url este será tratado e armazenado para ser utilizado em futuras requisições if(args.length > 0) { var access_token = args[0].split('=')[1]; var type_token = args[1].split('=')[1]; if (access_token) { window.sessionStorage.setItem("access_token", access_token) window.sessionStorage.setItem("type_token", access_token) } } else { // caso não exista, será feito o direcionamento para o usuário fazer o login e gerar um token de acesso var redirect_uri = window.location.href window.location.href = settings.forleven_auth + "?response_type=token&redirect_uri="+redirect_uri+"&client_id="+settings.client_id } } // se já existe um token de acesso armazenado vamos utilizá-lo para realizar as requisições else { var access_token = window.sessionStorage.access_token var type_token = window.sessionStorage.type_token console.log('Você está autorizado, adicione no seu header o Authorization: '+type_token+' '+access_token) }
Agora para realizar acesso a qualquer endpoint você deverá informar no header o parâmetro "Authorization" com o seu access_token precedido do type_token, ficando assim:
Ainda é possível usar este código de diversas formas, exemplo:
- Colocar diretamente na raiz para que seja conferido logo no primeiro acesso a página;
- Colocar o código em uma função e acioná-lo após o usuário clicar;
- Criar um painel de integrações onde o usuário realize esta autorização.
Leitura complementar
Para saber mais detalhes sobre o Oauth e a autorização implícita segue dois links que recomendamos a leitura:
https://docs.microsoft.com/pt-br/azure/active-directory/develop/v1-oauth2-implicit-grant-flow
https://auth0.com/docs/api-auth/tutorials/implicit-grant