Sequência de Chamadas

Visão Geral
O OAuth 2.0 é um protocolo de autorização amplamente utilizado que permite que aplicativos de terceiros acessem recursos por meio da autorização do usuário, sem expor suas credenciais. No fluxo de código de autorização do OAuth 2.0, o cliente deve direcionar o usuário ao ponto de extremidade de autorização (Authorization Endpoint) do servidor de autorização para obter a permissão de autorização do usuário.
Este documento visa detalhar como montar e utilizar o endereço de autorização conforme o protocolo OAuth 2.0, fornecendo exemplos práticos e observações importantes.
1. Montagem da URL para Obter o Código de Autorização
Estrutura Básica do Endereço de Autorização
O endereço de autorização é a URL utilizada pelo cliente para enviar uma solicitação ao servidor de autorização. Ele é composto pelos seguintes componentes:
https://<authorization-server-domain>/oauth?
response_type=<response_type>&
clientId=<client_id>&
redirectUri=<redirect_uri>&
scope=<scope>&
state=<state>Descrição dos Parâmetros
Etapas para montar o endereço de autorização
- Definir o endereço do servidor de autorização Ambiente de sandbox: https://account-sml.esignglobal.com/oauth
Ambiente de produção: https://account.esignglobal.com/oauth
- Definir os valores dos parâmetros Com base nas necessidades reais, defina os valores de cada parâmetro. Abaixo está um exemplo:
response_type:codeclientId:your-client-id-12345redirectUri:https://your-app.com/callbackscope:signaturestate:random-state-value
- Concatenar parâmetros de consulta Após anexar os parâmetros acima ao endereço do servidor de autorização na forma de pares chave-valor, utilize
¶ conectar cada parâmetro. Observe que os valores dos parâmetros devem ser codificados em URL.Exemplo de resultado da concatenação:
https://account-sml.esignglobal.com/oauth? response_type=code& clientId=your-client-id-12345& redirectUri=https%3A%2F%2Fyour-app.com%2Fcallback& scope=signature& state=random-state-value - Verificar o resultado da concatenação Certifique-se de que o endereço concatenado atenda aos seguintes requisitos:
- A ordem dos parâmetros pode ser arbitrária
- Os valores dos parâmetros foram corretamente codificados em URL
- Todos os parâmetros obrigatórios estão incluídos

Código de exemplo
Abaixo estão exemplos de código para concatenar o endereço de autorização em várias linguagens de programação comuns:
Exemplo em Python
import urllib.parse
# 定义参数
base_url = "https://account-sml.esignglobal.com/oauth"
params = {
"response_type": "code",
"clientId": "your-client-id-12345",
"redirectUri": "https://your-app.com/callback",
"scope": "signature",
"state": "random-state-value"
}
# 拼接地址
query_string = urllib.parse.urlencode(params)
authorization_url = f"{base_url}?{query_string}"
print(authorization_url)Exemplo em JavaScript
// 定义参数
const baseUrl = "https://account-sml.esignglobal.com/oauth";
const params = new URLSearchParams({
response_type: "code",
clientId: "your-client-id-12345",
redirectUri: "https://your-app.com/callback",
scope: "signature",
state: "random-state-value"
});
// 拼接地址
const authorizationUrl = `${baseUrl}?${params.toString()}`;
console.log(authorizationUrl);Exemplo em Java
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class OAuthUrlBuilder {
public static void main(String[ ] args) throws Exception {
// 定义参数
String baseUrl = "https://account-sml.esignglobal.com/oauth";
String responseType = "code";
String clientId = "your-client-id-12345";
String redirectUri = "https://your-app.com/callback";
String scope = "signature";
String state = "random-state-value";
// 拼接查询参数
String queryString = String.format(
"response_type=%s&clientId=%s&redirectUri=%s&scope=%s&state=%s",
URLEncoder.encode(responseType, StandardCharsets.UTF_8),
URLEncoder.encode(clientId, StandardCharsets.UTF_8),
URLEncoder.encode(redirectUri, StandardCharsets.UTF_8),
URLEncoder.encode(scope, StandardCharsets.UTF_8),
URLEncoder.encode(state, StandardCharsets.UTF_8)
);
// 生成完整的授权地址
String authorizationUrl = baseUrl + "?" + queryString;
System.out.println(authorizationUrl);
}
}
Observações
Ao montar e utilizar o endereço de autorização, observe os seguintes pontos:
- Correção da codificação URL Todos os valores dos parâmetros devem ser codificados em URL (
percent-encoding), para garantir que caracteres especiais (como:、/、?) não comprometam a estrutura da URL. Por exemplo,https://your-app.com/callbackdeve ser codificado comohttps%3A%2F%2Fyour-app.com%2Fcallback。 - Consistência do endereço de callback
redirect_uriO valor do parâmetro deve corresponder exatamente ao endereço de callback registrado no servidor de autorização pelo cliente, incluindo o protocolo (httpouhttps), nome de host, porta e caminho. Caso contrário, o servidor de autorização rejeitará a solicitação. stateSegurança do parâmetrostateO parâmetro é utilizado para prevenir ataques de falsificação de solicitação entre sites (CSRF). O cliente deve gerar uma string aleatória e imprevisível e, após o usuário concluir a autorização, verificar se o valor do callback emstatecorresponde ao valor enviado inicialmente.- Adequação do escopo de permissão
scopeO parâmetro define o escopo de permissão solicitado pelo cliente. Deve-se selecionar um escopo mínimo conforme a necessidade real, evitando solicitações excessivas de recursos do usuário, o que aumenta a confiança do mesmo. - Diferenciação de ambientes Nas fases de desenvolvimento e teste, geralmente utiliza-se um ambiente sandbox (como
account-sml.esignglobal.com), após o lançamento oficial, é necessário alternar para o ambiente de produção (comoaccount.esignglobal.com), garantindo o uso do endereço correto do servidor de autorização em diferentes ambientes. - Processamento de informações após autorização bem-sucedida Após a conclusão da autorização, o serviço de autorização eSignGlobal retornará concatenando por meio de
redirect_urios parâmetros concatenadoscodeebaseUrl, através debaseUrlé possível identificar o data center onde os dados do autorizador estão localizados; ao executar solicitações openapi, é necessário direcionar a requisição ao data center correspondente. - Tratamento de erros Se o usuário recusar a autorização ou ocorrer outro erro, o servidor de autorização retornará através de
redirect_urias informações de erro (comoerroreerror_descriptionnos parâmetros), o cliente deve tratar adequadamente esses erros e fornecer feedback claro ao usuário.






