sgcAuthOAuth2 e JWT,nativos no Delphi.Passkeys também.
Dois componentes levam o lado dos tokens da autenticação moderna para dentro do seu aplicativo. TsgcHTTP_OAuth2_Client executa os grants Authorization Code, PKCE, Client Credentials, Resource Owner Password e Device Code em qualquer provedor OAuth2/OIDC. TsgcHTTP_JWT_Client cria, assina e verifica JSON Web Tokens, de forma isolada ou como fonte do token Bearer para os seus clientes WebSocket e HTTP. Independente, com o runtime sgcWebSockets Core incluído.
Quickstart do sgcAuth | assine um JWT e valide-o no servidor
Cliente OAuth2Tipos de grantPasskeys WebAuthn
2Componentes cliente, OAuth2 e JWT, em uma única página da paleta
9RFCs implementadas: OAuth2, PKCE, DPoP, Device Code, JWT/JWS/JWE e mais
5Plataformas de destino: Windows, macOS, Linux 64 bits, iOS e Android
1Instalador independente, com o runtime Core dentro
100%Código-fonte incluído em todas as licenças
Veja rodando
Veja o sgcAuth em dois minutos.
JWT, OAuth2 e WebAuthn, no lado do cliente e no lado do servidor, a partir do Delphi. Narrado e legendado. Nada é baixado até você apertar o play.
Quickstart do sgcAuth
Tokens, autorização delegada e passkeys em um só pacote.
Três formas de entrarJWT quando você já conhece o usuário, OAuth2 quando um terceiro detém a identidade, WebAuthn quando não há senha nenhuma.
Assinar um JWTDefina o algoritmo e o segredo, preencha os claims padrão e anexe o componente a um cliente WebSocket ou HTTP como token Bearer.
Validar no servidorA assinatura, exp e nbf são verificados, e uma requisição com token inválido nunca chega ao seu handler.
OAuth2 em um só componenteClient id, URLs do provedor, escopos e um tipo de grant. Ele abre o navegador e executa o servidor local de redirecionamento por você.
WebAuthn e passkeysRegistro e asserção conduzidos pelo componente de servidor. A chave privada nunca sai do dispositivo.
O que vem no pacote
Um componente por tarefa, um único estilo de API.
Solte um componente em um formulário, defina os dados do provedor ou da chave, ligue os eventos e chame Start ou Sign. A nomenclatura é consistente entre os dois, então um fluxo de autenticação se lê igual, seja qual for o grant ou o algoritmo.
Todos os tipos de grant, um só componente
TsgcHTTP_OAuth2_Client controla OAuth2Options.GrantType usando auth2Code para aplicativos confiáveis no servidor, auth2CodePKCE para aplicativos nativos, móveis e de página única, auth2ClientCredentials para daemons e contas de serviço, auth2ResourceOwnerPassword, e auth2DeviceCode (RFC 8628) para smart TVs, quiosques e outros dispositivos com entrada limitada.
Start abre o navegador do sistema e sobe um pequeno servidor HTTP local a partir de LocalServerOptions para capturar o redirecionamento, trocando o código por um token por HTTPS puro. Refresh, Revoke e Introspect cobrem o ciclo de vida do token a partir daí, e DPoPOptions adiciona proof-of-possession (RFC 9449) para provedores que o exigem.
TsgcHTTP_JWT_Client publica tudo o que a RFC 7519 exige por meio de JWTOptions: o JOSE Header, os claims registrados do Payload (iss, sub, aud, exp, nbf, iat, jti, além de claims personalizados) e o material de chave para HMAC, RSA e ECDSA. Chame Sign para obter diretamente o token em serialização compacta, ou defina RefreshTokenAfter e deixe o componente reassinar automaticamente.
O componente JWT se conecta diretamente a Authentication.Token.JWT no TsgcWebSocketClient, TsgcHTTP1Client e TsgcHTTP2Client, então cada requisição de saída leva um Bearer token novo sem uma linha de código de cabeçalho.
O login sem senha é atendido pelo TsgcWSAPIServer_WebAuthn, um componente sgcWebSockets Enterprise/All-Access construído sobre a biblioteca Indy modificada que o sgcCustomIndy fornece como complemento. Ele sempre está incluído quando você pede o sgcAuth, e os componentes TOTP, LDAP, SAML, OpenID Connect e Mail OAuth2 também.
Login com Google ou Microsoft, acesso a APIs de servidor para servidor, smart TVs e quiosques, sessões longas sem pedir credenciais de novo e tokens Bearer para as suas próprias APIs WebSocket e HTTP. Os dois componentes funcionam bem dentro de um aplicativo VCL ou FMX, de um serviço ou de um processo de console.
Nenhum dos componentes depende de nada além da pilha de cliente HTTP do runtime Core e das primitivas de criptografia da plataforma, então os dois compilam e rodam onde o Delphi roda: Windows, macOS, Linux 64 bits, iOS e Android. Do Delphi 7 ao RAD Studio 13 e no C++ Builder.
O sgcAuth fala os padrões publicados OAuth2/OIDC e JWT/JWS em vez de encapsular o SDK de um fornecedor, então o provedor é escolha sua: Google, Microsoft, Auth0, Okta, Keycloak ou qualquer servidor de autorização compatível com as RFCs. Presets prontos de Google e Microsoft configuram para você os endpoints e escopos mais comuns.
O sgcAuth é um pacote independente. Ele inclui o runtime sgcWebSockets Core em que se baseia, e toda licença traz o código-fonte completo, então as trocas de token podem ser percorridas no seu próprio depurador. A distribuição é livre de royalties.
Configure as opções e depois chame um método. Os dois componentes compilam no Delphi 7 a 13 e no C++ Builder, e as mesmas propriedades são expostas no .NET.
uses
sgcHTTP_OAuth2_Client;
var
OAuth2: TsgcHTTP_OAuth2_Client;
begin
OAuth2 := TsgcHTTP_OAuth2_Client.Create(nil);
OAuth2.OAuth2Options.GrantType := auth2CodePKCE;
OAuth2.OAuth2Options.ClientId := 'your-client-id';
OAuth2.AuthorizationServerOptions.AuthURL := 'https://provider.com/oauth2/authorize';
OAuth2.AuthorizationServerOptions.TokenURL := 'https://provider.com/oauth2/token';
OAuth2.AuthorizationServerOptions.Scope.Text := 'openid profile';
OAuth2.LocalServerOptions.IP := '127.0.0.1';
OAuth2.LocalServerOptions.Port := 8080;
OAuth2.OnAfterAccessToken := OAuth2AccessToken;
OAuth2.Start; // opens the browser; the redirect lands on the local serverend;
procedure TForm1.OAuth2AccessToken(Sender: TObject);
begin
Memo1.Lines.Add('Access token received.');
end;
uses
sgcHTTP_JWT_Client;
var
JWT: TsgcHTTP_JWT_Client;
begin
JWT := TsgcHTTP_JWT_Client.Create(nil);
JWT.JWTOptions.Header.alg := jwtHS256;
JWT.JWTOptions.Algorithms.HS.Secret := '79F66F1E-E998-436B-8A0A-3E5DEFA4FD9E';
JWT.JWTOptions.Payload.iss := 'your-service';
JWT.JWTOptions.Payload.sub := '1234567890';
JWT.JWTOptions.Payload.iat := DateTimeToUnix(Now);
ShowMessage(JWT.Sign);
// or attach it to a WebSocket / HTTP client directly:// Client.Authentication.Token.Enabled := True;// Client.Authentication.Token.JWT := JWT;end;
Solte um componente em um formulárioTsgcHTTP_OAuth2_Client e TsgcHTTP_JWT_Client ficam em uma única página da paleta.
Defina o provedor ou a chaveURLs de autorização e de token, client id e escopos para OAuth2. Algoritmo, segredo ou par de chaves e claims para JWT.
Ligue os eventosOnAfterAccessToken entrega o token a você, e as chamadas de refresh, revogação e introspecção seguem o mesmo padrão.
Chame Start ou SignOu entregue o componente JWT a um cliente WebSocket ou HTTP e deixe que ele anexe um Bearer token novo a cada requisição.
Um olhar mais de perto
Três formas de entrar, um só pacote.
Quadros do vídeo de quickstart do sgcAuth.
Assinado no cliente, verificado no servidor.
O cliente JWT assina com HMAC, RSA ou ECDSA e viaja como um cabeçalho Authorization: Bearer . Do outro lado, a assinatura é verificada com o mesmo segredo ou com a chave pública, tokens expirados e ainda não válidos são rejeitados, e uma requisição com token inválido nunca chega ao seu handler.
Escolha o grant que se encaixa no aplicativo.
Authorization Code para aplicativos web com back end, PKCE para aplicativos nativos e móveis, Client Credentials para máquina a máquina, Device Code para TVs e consoles. Refresh, revogação, introspecção e DPoP também são tratados para você.
Sem senha e sem segredo compartilhado para vazar.
O servidor envia um desafio aleatório, o autenticador o assina com a chave privada e o servidor o confere com a chave pública armazenada. O usuário entra com uma passkey, uma impressão digital ou uma chave de hardware, e a chave privada nunca sai do dispositivo.
Antes de comprar
Quatro coisas que vale saber antes.
O que o sgcAuth precisa de você, se você já possui estes componentes, o que o WebAuthn exige além disso e quais IDEs ele atende. As respostas são curtas e estão nesta página, e não nas letras miúdas.
job component grants / algorithms
OAuth2 TsgcHTTP_OAuth2_ClientCode, PKCE, Client Credentials,Resource Owner Password, Device Code
JWT TsgcHTTP_JWT_ClientHS256/384/512, RS256/384/512, ES256/384/512already own it?
Both the OAuth2 Client and the JWT Client ship inside
sgcWebSockets from the Standard edition up.
sgcAuth is for licensing OAuth2 + JWT without a full
sgcWebSockets edition.
O sgcAuth é independenteO runtime sgcWebSockets Core está incluído: a pilha de cliente HTTP/TLS pela qual os dois componentes enviam as requisições de token e o mecanismo JSON que interpreta as respostas. Um instalador, código-fonte completo na caixa.
Já está na sua edição do sgcWebSockets?Os dois clientes vêm dentro do sgcWebSockets a partir da edição Standard. O sgcAuth existe para o caso oposto: suporte a clientes OAuth2 e JWT sem licenciar uma edição completa do sgcWebSockets.
O WebAuthn precisa do sgcCustomIndyTsgcWSAPIServer_WebAuthn é construído sobre a biblioteca Indy modificada que o sgcCustomIndy fornece como complemento. Ele sempre está incluído quando você pede o sgcAuth, e o preço do sgcAuth exibido já o cobre.
Delphi e C++ BuilderO sgcAuth atende do Delphi 7 ao RAD Studio 13 e o C++ Builder. O instalador de avaliação gratuito é o trial do sgcWebSockets All-Access, então os dois componentes podem ser avaliados hoje.
Grants, refresh, revogação e assinatura são métodos e eventos de primeira classe, e o código-fonte completo significa que nada no meio é uma caixa-preta. Todos os componentes e propriedades →
Parte do sgcWebSockets
Licenciado de forma independente, ou já na sua edição.
O sgcAuth é um pacote da família sgcWebSockets. Compre-o de forma independente, com o runtime Core incluído, ou receba os dois clientes com qualquer edição do sgcWebSockets a partir da Standard.
sgcAuth
Os clientes OAuth2 e JWT, independentes, com o runtime sgcWebSockets Core incluído.
Se você tem qualquer edição do sgcWebSockets, já tem os dois clientes. O sgcAuth é para OAuth2 e JWT sem licenciar uma edição completa do sgcWebSockets.
O sgcAuth é uma das bibliotecas de componentes da eSeGeCe para Delphi, C++ Builder e .NET. Elas compartilham convenções, vêm com o código-fonte completo e são distribuídas sem royalties.