Sequenza di chiamata

Panoramica
OAuth 2.0 è un protocollo di autorizzazione ampiamente utilizzato che consente alle applicazioni di terze parti di accedere alle risorse dell'utente tramite la sua autorizzazione, senza esporre le relative credenziali. Nella modalità del codice di autorizzazione di OAuth 2.0, il client deve reindirizzare l'utente all'endpoint di autorizzazione del server di autorizzazione (Authorization Endpoint) per ottenere il consenso dell'utente.
Questo documento ha lo scopo di illustrare nel dettaglio come comporre e utilizzare l'URL di autorizzazione secondo il protocollo OAuth 2.0, fornendo esempi pratici e note importanti.
1. Composizione dell'URL per ottenere il codice di autorizzazione
Struttura di base dell'URL di autorizzazione
L'URL di autorizzazione è l'indirizzo utilizzato dal client per inviare una richiesta al server di autorizzazione. È composto dalle seguenti sezioni:
https://<authorization-server-domain>/oauth?
response_type=<response_type>&
clientId=<client_id>&
redirectUri=<redirect_uri>&
scope=<scope>&
state=<state>Descrizione dei parametri
Fasi per la costruzione dell'URL di autorizzazione
- Determinare l'indirizzo del server di autorizzazione Ambiente sandbox: https://account-sml.esignglobal.com/oauth
Ambiente di produzione: https://account.esignglobal.com/oauth
- Impostare i valori dei parametri Impostare i valori dei singoli parametri in base alle effettive necessità. Di seguito un esempio:
response_type:codeclientId:your-client-id-12345redirectUri:https://your-app.com/callbackscope:signaturestate:random-state-value
- Composizione dei parametri di query Dopo aver concatenato i suddetti parametri in formato chiave-valore all'indirizzo del server di autorizzazione, utilizzare
&per unire ciascun parametro. Si noti che i valori dei parametri devono essere codificati in URL.Esempio di risultato:
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 - Verifica del risultato Assicurarsi che l'indirizzo composto soddisfi i seguenti requisiti:
- L'ordine dei parametri può essere arbitrario
- I valori dei parametri sono stati correttamente codificati in URL
- Tutti i parametri obbligatori sono inclusi

Codice di esempio
Di seguito sono riportati esempi di codice per la composizione dell'indirizzo di autorizzazione in diversi linguaggi di programmazione comuni:
Esempio 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)Esempio 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);Esempio 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);
}
}
Note importanti
Quando si compone e si utilizza l'URL di autorizzazione, è necessario prestare attenzione ai seguenti punti:
- Correttezza della codifica URL Tutti i valori dei parametri devono essere codificati URL (
percent-encoding), per garantire che i caratteri speciali (come:、/、?ecc.) non compromettano la struttura dell'URL. Ad esempio,https://your-app.com/callbackdovrebbe essere codificato comehttps%3A%2F%2Fyour-app.com%2Fcallback。 - Coerenza dell'indirizzo di callback
redirect_uriIl valore del parametro deve corrispondere esattamente all'indirizzo di callback registrato dal client sul server di autorizzazione, inclusi il protocollo (httpohttps), nome host, porta e percorso. In caso contrario, il server di autorizzazione rifiuterà la richiesta. stateSicurezza del parametrostateIl parametro serve a prevenire attacchi di falsificazione di richieste tra siti (CSRF). Il client dovrebbe generare una stringa casuale e imprevedibile e verificare, dopo il completamento dell'autorizzazione da parte dell'utente, se nel callbackstatecorrisponde al valore inviato inizialmente.- Adeguatezza dell'ambito delle autorizzazioni
scopeIl parametro definisce l'ambito delle autorizzazioni richiesto dal client. Dovrebbe essere selezionato un ambito minimo in base alle effettive necessità, evitando di richiedere eccessivamente le risorse utente, al fine di aumentare la fiducia degli utenti. - Distinzione degli ambienti Durante le fasi di sviluppo e test, viene solitamente utilizzato un ambiente sandbox (come
account-sml.esignglobal.com), dopo il rilascio ufficiale, è necessario passare all'ambiente di produzione (comeaccount.esignglobal.com), assicurandosi di utilizzare l'indirizzo corretto del server di autorizzazione in ciascun ambiente. - Gestione delle informazioni dopo l'autorizzazione positiva Una volta completata l'autorizzazione, il servizio di autorizzazione eSignGlobal restituirà tramite
redirect_uriconcatenare e restituirecodeebaseUrl, tramitebaseUrlè possibile identificare il data center in cui risiedono i dati dell'autorizzante; durante l'esecuzione delle richieste openapi, è necessario inviare la richiesta in base al data center corrispondente. - Gestione degli errori Se l'utente rifiuta l'autorizzazione o si verifica un altro errore, il server di autorizzazione restituirà tramite
redirect_urile informazioni di errore (comeerroreerror_descriptionparametri), il client dovrebbe gestire correttamente questi errori e fornire un feedback chiaro all'utente.






