TsgcHTTP_OAuth2_Client

Quando um cliente precisa de um novo Access Token, inicia automaticamente um servidor HTTP para processar a resposta do servidor de Autorização.

Introdução

Este componente permite que você gerencie o fluxo entre o cliente e os outros papéis. Basicamente, quando você define Active := True, ele abre um novo navegador web e solicita ao usuário a concessão de autorização; se bem-sucedido, o servidor de autorização envia um token à aplicação, que é processado e, com este token, o cliente pode se conectar ao servidor de recursos. Este componente inicia um servidor HTTP simples que trata as respostas do servidor de autorização e usa um cliente HTTP para solicitar Access Tokens.

 

GrantType

 

O cliente suporta os seguintes tipos de autorização:

 

auth2Code: É utilizado para realizar autenticação e autorização na maioria dos tipos de aplicações, incluindo aplicações de página única, aplicações web e aplicações instaladas nativamente. O fluxo permite que as aplicações adquiram com segurança access_tokens que podem ser utilizados para acessar recursos protegidos, bem como refresh tokens para obter access_tokens adicionais, e ID tokens para o usuário autenticado.

 

 

auth2CodePKCE: é o mesmo fluxo de autenticação que auth2Code com PKCE habilitado. PKCE (Proof Key for Code Exchange) é uma extensão de segurança para OAuth 2.0, projetada para aprimorar a segurança de fluxos de autorização para aplicações nativas e single-page. Ele mitiga o risco de ataques de interceptação, especialmente em clientes públicos onde o authorization code pode ser exposto a interceptação em trânsito. Geralmente esta opção é utilizada em apps nativos e mobile.

 

auth2ClientCredentials: Este tipo de grant é comumente utilizado para interações servidor-a-servidor que devem ser executadas em segundo plano, sem interação imediata com um usuário. Esses tipos de aplicações são frequentemente chamados de daemons ou contas de serviço.

 

 

auth2DeviceCode: Device Authorization Grant (RFC 8628) para dispositivos com entrada limitada, como smart TVs, consoles de mídia e dispositivos IoT que não possuem navegador ou têm capacidades de entrada limitadas. O dispositivo exibe um código de usuário e uma URI de verificação; o usuário visita a URI em um dispositivo secundário (celular ou computador) e insere o código para autorizar.

 

LocalServerOptions

 

Quando um cliente precisa de um novo Access Token, ele inicia automaticamente um servidor HTTP para processar a resposta do servidor de autorização. Este servidor é transparente para o usuário e geralmente funciona em localhost. Por padrão utiliza a porta 8080, mas você pode alterar se necessário.

 

 

AuthorizationServerOptions

 

Aqui você deve definir a URL para Authorization e Access Token, normalmente fornecidas na especificação da API. Scope é uma lista de todos os escopos solicitados pelo cliente. Exemplo:

 

 

OAuth2Options

 

ClientId é um campo obrigatório que informa ao servidor qual é a identificação do cliente. Verifique a especificação da sua API para saber como obter um ClientId. O mesmo se aplica ao client secret.

Às vezes, o servidor exige um usuário e uma senha para conectar usando Basic Authentication; se for o caso, você pode configurar isso nos campos Username/Password. Exemplo:

 

 

HTTPClientOptions

 

Aqui você pode personalizar as Opções do Cliente quando ele se conecta ao Servidor HTTP para solicitar um novo token.

 

TLSOptions: se o TLS estiver habilitado, aqui você pode personalizar algumas propriedades TLS.

 

ALPNProtocols: lista dos protocolos ALPN que serão enviados ao servidor.

RootCertFile: caminho para o arquivo de certificado raiz.

CertFile: caminho para o arquivo de certificado.

KeyFile: caminho para o arquivo de chave do certificado.

Password: se o certificado está protegido com uma senha, defina-a aqui.

VerifyCertificate: se o certificado deve ser verificado, habilite esta propriedade.

VerifyDepth: é uma propriedade Integer que representa o número máximo de links permitidos quando a verificação é realizada para o certificado X.509.

Version: por padrão usa TLS 1.0; se o servidor exigir uma versão TLS superior, ela pode ser selecionada aqui.

IOHandler: selecione qual biblioteca você utilizará para conectar usando TLS.

iohOpenSSL: utiliza a biblioteca OpenSSL e é o padrão para componentes Indy. Requer implantar as bibliotecas openssl para win32/win64.

iohSChannel: utiliza o Secure Channel, que é um protocolo de segurança implementado pela Microsoft para Windows, não requer a implantação de bibliotecas openssl. Funciona apenas no Windows 32/64 bits.

OpenSSL_Options: permite definir qual API OpenSSL será utilizada.

APIVersion: permite definir qual API OpenSSL será usada.

oslAPI_1_0: usa a API 1.0 do OpenSSL, é a mais recente suportada pelo Indy

oslAPI_1_1: usa a API 1.1 do OpenSSL, requer nossa biblioteca Indy personalizada e permite usar as bibliotecas OpenSSL 1.1.1 (com suporte a TLS 1.3).

oslAPI_3_0: utiliza a API 3.0 do OpenSSL, requer nossa biblioteca Indy personalizada e permite utilizar as bibliotecas OpenSSL 3.0.0 (com suporte a TLS 1.3).

LibPath: aqui você pode configurar onde estão localizadas as bibliotecas openSSL

oslpNone: este é o padrão, as bibliotecas openSSL devem estar na mesma pasta onde está o binário ou em um caminho conhecido.

oslpDefaultFolder: define automaticamente o caminho openSSL onde as bibliotecas devem estar localizadas para todas as personalidades do IDE.

oslpCustomFolder: se esta for a opção selecionada, defina o caminho completo na propriedade LibPathCustom.

LibPathCustom: quando LibPath = oslpCustomFolder, defina aqui o caminho completo onde estão localizadas as bibliotecas openSSL.

UnixSymLinks: habilita ou desabilita o carregamento de SymLinks em sistemas Unix (por padrão está habilitado, exceto no OSX64):

oslsSymLinksDefault: por padrão estão habilitados, exceto sob OSX64 (após o MacOS Monterey falha ao tentar carregar a biblioteca sem versão.).

oslsSymLinksLoadFirst: Carrega os SymLinks e faz isso antes de tentar carregar as bibliotecas de versão.

oslsSymLinksLoad: Carrega os SymLinks após tentar carregar as bibliotecas de versão.

oslsSymLinksDontLoad: não carrega os SymLinks.

SChannel_Options: permite que você utilize um certificado do Windows Certificate Store.

CertHash: é o Hash do certificado. Você pode encontrar o Hash do certificado executando um comando dir no powershell.

CertStoreName: o nome do store onde o certificado está armazenado. Selecione um dos abaixo:

scsnMY (o padrão)

scsnCA

scsnRoot

scsnTrust

CertStorePath: o caminho do store onde o certificado está armazenado. Selecione um dos abaixo:

scspStoreCurrentUser (o padrão)

scspStoreLocalMachine

 

LogOptions: se um nome de arquivo for definido, salvará um log das requisições/respostas HTTP do cliente HTTP

 

Referência