TsgcHTTP_OAuth2_Client

Quando un client necessita di un nuovo Access Token, avvia automaticamente un server HTTP per elaborare la risposta del server di autorizzazione.

Introduzione

Questo componente Le consente di gestire il flusso tra il client e gli altri ruoli; in pratica, quando imposta Active := True, apre un nuovo Web Browser e richiede all'utente di concedere l'autorizzazione; se l'operazione ha esito positivo, il server di autorizzazione invia un token all'applicazione, che viene elaborato e con il quale il client può connettersi al resource server. Questo componente avvia un semplice server HTTP che gestisce le risposte del server di autorizzazione e utilizza un client HTTP per richiedere gli Access Token.

 

GrantType

 

Il client supporta i seguenti tipi di autorizzazione:

 

auth2Code: Viene utilizzato per eseguire l'autenticazione e l'autorizzazione nella maggior parte dei tipi di applicazioni, incluse le applicazioni a pagina singola, le applicazioni Web e le applicazioni installate nativamente. Il flusso consente alle app di acquisire in modo sicuro access_token che possono essere utilizzati per accedere a risorse protette, nonché refresh token per ottenere ulteriori access_token e ID token per l'utente connesso.

 

 

auth2CodePKCE: è lo stesso flusso di autenticazione di auth2Code con PKCE abilitato. PKCE (Proof Key for Code Exchange) è un'estensione di sicurezza per OAuth 2.0, progettata per migliorare la sicurezza dei flussi di autorizzazione per applicazioni native e single-page. Mitiga il rischio di attacchi di intercettazione, specialmente nei client pubblici in cui il codice di autorizzazione potrebbe essere esposto all'intercettazione durante il transito. Di solito questa opzione viene utilizzata nelle app native e mobili.

 

auth2ClientCredentials: Questo tipo di concessione è comunemente utilizzato per le interazioni server-to-server che devono essere eseguite in background, senza l'interazione immediata con un utente. Questi tipi di applicazioni vengono spesso definiti daemon o account di servizio.

 

 

auth2DeviceCode: Device Authorization Grant (RFC 8628) per dispositivi con input limitato come smart TV, console multimediali e dispositivi IoT privi di browser o con capacità di input limitate. Il dispositivo mostra un codice utente e un URI di verifica; l'utente visita l'URI su un dispositivo secondario (telefono o computer) e inserisce il codice per autorizzare.

 

LocalServerOptions

 

Quando un client ha bisogno di un nuovo Access Token, avvia automaticamente un server HTTP per elaborare la risposta dal server di autorizzazione. Questo server è trasparente per l'utente e di solito funziona su localhost. Per impostazione predefinita utilizza la porta 8080, ma può essere modificata se necessario.

 

 

AuthorizationServerOptions

 

Qui deve impostare l'URL per Authorization e Access Token, di solito questi sono forniti nella specifica dell'API. Scope è un elenco di tutti gli scope richiesti dal client. Esempio:

 

 

OAuth2Options

 

ClientId è un campo obbligatorio che informa il server dell'identificazione del client. Consultare la specifica API per sapere come ottenere un ClientId. Lo stesso vale per il client secret.

A volte il server richiede nome utente e password per connettersi tramite autenticazione Basic. Se è questo il caso, è possibile configurarlo nei campi Username/Password. Esempio:

 

 

HTTPClientOptions

 

Qui può personalizzare le Client Options utilizzate per la connessione all'HTTP Server al fine di richiedere un nuovo token.

 

TLSOptions: se TLS è abilitato, qui è possibile personalizzare alcune proprietà TLS.

 

ALPNProtocols: elenco dei protocolli ALPN che verranno inviati al server.

RootCertFile: percorso del file del certificato radice.

CertFile: percorso del file del certificato.

KeyFile: percorso del file della chiave del certificato.

Password: se il certificato è protetto da una password, impostarla qui.

VerifyCertificate: se il certificato deve essere verificato, abilitare questa proprietà.

VerifyDepth: è una proprietà Integer che rappresenta il numero massimo di link consentiti durante la verifica del certificato X.509.

Version: per impostazione predefinita utilizza TLS 1.0; se il server richiede una versione TLS superiore, è possibile selezionarla qui.

IOHandler: selezionare la libreria da utilizzare per connettersi tramite TLS.

iohOpenSSL: utilizza la libreria OpenSSL ed è l'impostazione predefinita per i componenti Indy. Richiede il deployment delle librerie openssl per win32/win64.

iohSChannel: utilizza Secure Channel, un protocollo di sicurezza implementato da Microsoft per Windows, non richiede la distribuzione delle librerie openssl. Funziona solo in Windows a 32/64 bit.

OpenSSL_Options: consente di definire quale API OpenSSL verrà utilizzata.

APIVersion: consente di definire quale API OpenSSL verrà utilizzata.

oslAPI_1_0: utilizza l'API OpenSSL 1.0, l'ultima supportata da Indy

oslAPI_1_1: utilizza OpenSSL API 1.1, richiede la nostra libreria Indy personalizzata e consente l'utilizzo delle librerie OpenSSL 1.1.1 (con supporto TLS 1.3).

oslAPI_3_0: utilizza l'API 3.0 OpenSSL, richiede la nostra libreria Indy personalizzata e consente l'uso delle librerie OpenSSL 3.0.0 (con supporto TLS 1.3).

LibPath: qui è possibile configurare la posizione delle librerie openSSL

oslpNone: questa è l'impostazione predefinita; le librerie openSSL devono trovarsi nella stessa cartella del binario o in un percorso noto.

oslpDefaultFolder: imposta automaticamente il percorso openSSL dove le librerie devono essere situate per tutte le personalità IDE.

oslpCustomFolder: se questa è l'opzione selezionata, definire il percorso completo nella proprietà LibPathCustom.

LibPathCustom: quando LibPath = oslpCustomFolder, definire qui il percorso completo dove si trovano le librerie openSSL.

UnixSymLinks: abilita o disabilita il caricamento dei SymLink sui sistemi Unix (per impostazione predefinita è abilitato, tranne che su OSX64):

oslsSymLinksDefault: per impostazione predefinita sono abilitati, eccetto su OSX64 (dopo MacOS Monterey si verifica un errore nel tentativo di caricare la libreria senza versione.).

oslsSymLinksLoadFirst: Carica i SymLink e li elabora prima di tentare il caricamento delle librerie di versione.

oslsSymLinksLoad: Carica i SymLink dopo aver tentato di caricare le librerie di versione.

oslsSymLinksDontLoad: non caricare i SymLink.

SChannel_Options: consente di utilizzare un certificato dall'archivio certificati di Windows.

CertHash: è l'hash del certificato. È possibile trovare l'hash del certificato eseguendo un comando dir in PowerShell.

CertStoreName: il nome dello store in cui è memorizzato il certificato. Selezioni uno dei seguenti:

scsnMY (il valore predefinito)

scsnCA

scsnRoot

scsnTrust

CertStorePath: il percorso dello store in cui è memorizzato il certificato. Selezionare uno dei seguenti:

scspStoreCurrentUser (predefinito)

scspStoreLocalMachine

 

LogOptions: se viene impostato un nome file, verrà salvato un log delle richieste/risposte HTTP del client HTTP

 

Riferimento