Cloud Jasmin DesenvolvimentoOAuth2
DesenvolvimentoOAuth2
OAuth2
Voltar | Lista de artigos

Quais os fluxos de autorização suportados na Web API?

Última alteração a 26/08/2022

O protocolo de autorização OAuth 2.0 suporta quatro fluxos de autorização distintos, sendo a sua escolha muito importante para o tipo de aplicação integrada.

  • Implicit
  • Client credentials
  • Authorization code
  • Authorization code c/ PKCE

A escolha do tipo de fluxo a utilizar é feita no momento de criação da App.

Implicit

Utilizado por Apps Móveis ou Aplicações Web, que são executadas no cliente e como tal não conseguem guardar o cliente secret.

Client credentials

Utilizado em comunicações do tipo “machine-to-machine”, cenários onde não é necessário dar permissões a um utilizador em particular.

Authorization code

Utilizados por aplicações web que se executam do lado do servidor.

Exemplo de Utilização

O seguinte exemplo demostra um caso de utilização do fluxo de autorização Implict para a autorizar uma aplicação.

Código para a página html cliente.

'<!DOCTYPE html>
'<html>
'<head>
    <title>Jasmin</title>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS & JS -->
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

    <!-- Mystyle -->
    <link href="main.css" rel="stylesheet" type="text/css" />

    <!-- Our Website scripts -->
    <script src="Index.js"></script>
'</head>
'<body>
    <div class="container-fluid">
        <div id="aligner">
            <div class="text-center">
                <div class="row">
                    <div class="col-md-12">
                        <h4><B>Demo OAuth 2.0</B></h4>
                        <p>Autenticação com fluxo implicito</p>
                    </div>
                </div>
                <div class="col-md-12">
                    <button onClick="doLogin()" class="btn btn-primary btn-block">Entrar</button>
                </div>
            </div>
        </div>
    </div>
'</body>
'</html>

Código java que irá realizar o pedido.

function doLogin() {

    var CLIENT_ID = 'A chave do seu cliente';
    var AUTHORIZATION_ENDPOINT = 'https://identity.primaverabss.com/connect/authorize';
    var CALLBACK_ENDPOINT = 'https://localhost:4200/login.html'

    try {

        var authUrl = AUTHORIZATION_ENDPOINT +
        '?response_type=token' +
        '&client_id=' + CLIENT_ID +
        '&redirect_uri=' + CALLBACK_ENDPOINT +
        '&scope=rose-api';

        window.location.replace(authUrl);

    }
    catch (err) {
        console.log(err.message);
    }
}

Estilos da página.

#aligner {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translateX(-50%) translateY(-50%);
}

#heading {
    padding: 10px;
}

#main-content > .container {
    padding: 0 15px;
}
Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.

login para deixar a sua opinião.

Obrigado pelo seu feedback. Iremos analisá-lo para continuarmos a melhorar!
Artigos Relacionados
Como funciona a autorização OAuth 2.0? Scopes Limites utilização da API Quais os fluxos de autorização suportados na Web API? Como funciona a autorização OAuth 2.0?