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