sgcAuth Matryca funkcji

Wszystko, co robi sgcAuth, rozpisane na dwa komponenty klienckie, typy przyznania uprawnień i roszczenia, które implementują, oraz komponenty WebAuthn, TOTP, LDAP, SAML, OpenID Connect i Mail OAuth2, które pakiet odblokowuje razem z sgcCustomIndy. Każda funkcja działa tak samo w Delphi i C++ Builder, a każda licencja zawiera pełny kod źródłowy.

OAuth2

Pięć typów przyznania uprawnień, jeden komponent

JWT

Podpisz, dołącz albo zweryfikuj

WebAuthn

Klucze dostępu, przez sgcCustomIndy

TOTP

Kody drugiego składnika i kody odzyskiwania

LDAP

Logowanie do Active Directory przez TLS

SAML

Jednokrotne logowanie SAML 2.0

OpenID Connect

Logowanie z walidacją tokenu ID

Mail OAuth2

OAuth2 dla SMTP, IMAP i POP3

Standardy i platformy

Delphi od 7 do 13, C++ Builder

sgcAuth jest samowystarczalny. Jest dostarczany z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core, więc nie jest dodatkiem dla klientów OAuth2 i JWT.

Także wewnątrz sgcWebSockets. Zarówno klient OAuth2, jak i klient JWT są dostarczane także wewnątrz sgcWebSockets od edycji Standard wzwyż. All-Access zawiera wszystko. sgcAuth to pakiet samodzielny dla zespołów, które potrzebują wyłącznie klientów uwierzytelniania.

Siedem komponentów palety

Dwa klienty tokenów i pięć komponentów tożsamości, zarejestrowane na stronie palety SGC Auth.

KomponentKlasaZadanieOpis
OAuth2 ClientTsgcHTTP_OAuth2_ClientUzyskaj tokenPrzepływy Authorization Code, PKCE, Client Credentials, Resource Owner Password i Device Code wobec dowolnego dostawcy OAuth2/OIDC, z wbudowanym lokalnym serwerem przekierowania.
JWT ClientTsgcHTTP_JWT_ClientPodpisz tokenBuduje, podpisuje i weryfikuje tokeny JSON Web Token, samodzielnie albo jako źródło tokenu Bearer dla TsgcWebSocketClient, TsgcHTTP1Client i TsgcHTTP2Client.
TOTP AuthenticatorTsgcTOTPAuthenticatorSprawdź drugi składnikSekrety TOTP i HOTP, provisioning QR przez otpauth, weryfikacja kodów z ochroną przed powtórzeniem oraz jednorazowe kody odzyskiwania.
LDAP ClientTsgcLDAPClientSprawdź hasło katalogoweLogowanie LDAP v3 i Active Directory przez LDAPS lub StartTLS, zagnieżdżona przynależność do grup i przeszukiwanie stronicowane.
SAML Service ProviderTsgcSAMLServiceProviderJednokrotne logowanieService provider SAML 2.0 dla Entra ID, Okta, AD FS, Google Workspace i Keycloak, z rygorystyczną walidacją podpisu i asercji.
OpenID Connect ClientTsgcHTTP_OIDC_ClientZaloguj użytkownikaDiscovery, logowanie w przeglądarce z PKCE i nonce, walidacja tokenu ID względem kluczy dostawcy oraz endpoint userinfo.
Mail OAuth2TsgcMailOAuth2Uwierzytelnij pocztęTokeny dostępu i odświeżania dla Microsoft 365 i Gmail, a także ciągi SASL XOAUTH2 i OAUTHBEARER dla SMTP, IMAP i POP3.

Pięć typów przyznania uprawnień, jeden komponent

TsgcHTTP_OAuth2_Client obejmuje OAuth 2.0 (RFC 6749) od początku do końca: uruchamia przepływ, przechwytuje przekierowanie, wymienia kod na token i zarządza tokenem po tym fakcie.

MożliwośćAPIUwagi
Authorization CodeOAuth2Options.GrantType := auth2CodeStandardowy przepływ dla zaufanych aplikacji webowych po stronie serwera, które mogą przechowywać sekret klienta.
Authorization Code + PKCEauth2CodePKCE (RFC 7636)Ten sam przepływ z Proof Key for Code Exchange, dla aplikacji natywnych, mobilnych i jednostronicowych, które nie mogą przechowywać sekretu.
Client Credentialsauth2ClientCredentialsWywołania serwer-serwer bez udziału użytkownika: demony i konta usług.
Resource Owner Passwordauth2ResourceOwnerPasswordAplikacja pobiera hasło użytkownika bezpośrednio i wymienia je na token.
Device Codeauth2DeviceCode (RFC 8628)Dla urządzeń o ograniczonych możliwościach wprowadzania danych, smart TV, konsol multimedialnych, IoT: pokazuje kod użytkownika, który osoba wpisuje na drugim urządzeniu.
Tożsamość klientaOAuth2Options.ClientId, ClientSecret, Username, PasswordUstaw zgodnie ze specyfikacją API twojego dostawcy; Username/Password obejmują dostawców wymagających Basic Authentication na punkcie końcowym tokenu.
Punkty końcowe dostawcyAuthorizationServerOptions.AuthURL, TokenURL, Scope, RevocationURL, IntrospectionURLAdresy URL i lista zakresów opublikowane w dokumentacji OAuth2/OIDC twojego dostawcy.
Ustawienia wstępne społecznościoweTsgcHTTP_OAuth2_Client_Google, TsgcHTTP_OAuth2_Client_MicrosoftGotowe klasy potomne wstępnie konfigurujące punkty końcowe i zakresy Google oraz Microsoft.
Lokalny nasłuch przekierowaniaLocalServerOptions.IP, Port, RedirectURLMały serwer HTTP uruchamiany przez komponent do odbioru przekierowania kodu autoryzacyjnego; domyślnie port 8080, albo 0 dla losowego portu w aplikacjach desktopowych.
Uruchom przepływStart, StopStart otwiera przeglądarkę systemową (albo wystawia kod urządzenia) i rozpoczyna skonfigurowany typ przyznania uprawnień; Stop przerywa go i zamyka lokalny nasłuch.
OdświeżanieRefreshWymienia token odświeżający na nowy token dostępu bez kolejnego przejścia przez przeglądarkę.
Unieważnienie i introspekcjaRevoke (RFC 7009), Introspect (RFC 7662)Unieważnij token albo zapytaj o jego status i metadane u dostawcy.
DPoPDPoPOptions, GenerateDPoPKeyPair, OnDPoPSignMateriał kluczowy i podpisywanie Demonstrating Proof-of-Possession (RFC 9449), dla dostawców wiążących tokeny z parą kluczy.
Transport HTTPHTTPClientOptionsKonfiguracja TLS i logowania dla wewnętrznego klienta HTTP wysyłającego żądania POST do punktów końcowych tokenu, unieważnienia i introspekcji.
Zdarzenia cyklu życiaOnBeforeAuthorizeCode, OnAfterAuthorizeCode, OnBeforeAccessToken, OnAfterAccessToken, OnBeforeRefreshToken, OnAfterRefreshTokenPary przed/po wokół każdego kroku przepływu.
Zdarzenia błędówOnErrorAccessToken, OnErrorAuthorizeCode, OnErrorRefreshToken, OnErrorRevokeToken, OnErrorIntrospectTokenPo jednym na każdy punkt awarii w przepływie, każde niesie błąd, opis i URI od dostawcy.
Zdarzenia Device CodeOnDeviceCode, OnDeviceCodeExpiredDostarcza kod użytkownika i URI weryfikacyjny do wyświetlenia oraz uruchamia się, jeśli użytkownik nie ukończy autoryzacji na czas.

Podpisz, dołącz albo zweryfikuj

TsgcHTTP_JWT_Client implementuje RFC 7519 (JSON Web Token), RFC 7515 (JWS) i RFC 7516 (JWE) poprzez jedną właściwość JWTOptions.

MożliwośćAPIUwagi
NagłówekJWTOptions.Header.alg, typ, kidNagłówek JOSE. alg wybiera jwtHS256/384/512, jwtRS256/384/512, jwtES256/384/512 albo post-kwantowe jwtMLDSA44/jwtMLDSA65/jwtMLDSA87; dodatkowe pola przez Header.AddKeyValue.
Ładunek / roszczeniaJWTOptions.Payload.iss, sub, aud, exp, nbf, iat, jtiZarejestrowane roszczenia z RFC 7519; własne roszczenia dodawane są przez Payload.AddKeyValue.
Materiał kluczowy do podpisywaniaJWTOptions.Algorithms.HS.Secret, RS.PrivateKey, ES.PrivateKey, MLDSA.PrivateKeyWspólny sekret dla HMAC, klucz prywatny w formacie PEM dla RSA lub ECDSA, PEM w formacie PKCS#8 dla ML-DSA, wybierany przez Header.alg.
Podpisy post-kwantowejwtMLDSA44, jwtMLDSA65, jwtMLDSA87Algorytmy JWS ML-DSA z RFC 9964, zaimplementowane w czystym Pascalu, więc na tej ścieżce nie jest używany OpenSSL. Klient podpisuje kluczem JWTOptions.Algorithms.MLDSA.PrivateKey, czyli PEM w formacie PKCS#8; serwer weryfikuje kluczem JWTOptions.Algorithms.MLDSA.PublicKey, czyli PEM w formacie SubjectPublicKeyInfo, po ustawieniu JWTOptions.Algorithms.MLDSA.Enabled.
Klucze JSON Web Key dla ML-DSAsgcMLDSA_ExportPublicJWK, sgcMLDSA_ExportPrivateJWK, sgcMLDSA_ImportJWK, sgcMLDSA_ImportJWKAsPEMKlucze JSON Web Key typu AKP, do opublikowania klucza ML-DSA w JWKS albo odczytania go od dostawcy.
Automatyczne odświeżanieJWTOptions.RefreshTokenAfterGdy większe od zera, Sign automatycznie odświeża iat i przelicza exp; 0 regeneruje token przy każdym żądaniu.
Podpisywanie samodzielneSignBuduje, podpisuje i zwraca zakodowany token (header.payload.signature) jako pojedynczy ciąg, bez potrzeby klienta HTTP czy WebSocket.
Dołącz do klientaStart, Client.Authentication.Token.JWTStart podpisuje skonfigurowany JWT i dostarcza go jako token Bearer do komponentu nadrzędnego; ustaw go raz na Authentication.Token.JWT, a każde żądanie wychodzi podpisane.
Współpracuje zTsgcWebSocketClient, TsgcHTTP1Client, TsgcHTTP2ClientKażdy z tych trzech akceptuje TsgcHTTP_JWT_Client jako swoje źródło tokenu Bearer przez Authentication.Token.
Konfiguracja OpenSSLJWTOptions.OpenSSL_OptionsWersja API i ścieżka biblioteki używane przez algorytmy RS i ES (APIVersion, LibPath, LibPathCustom, UnixSymLinks).

Logowanie bezhasłowe, z jednym dodatkowym elementem

WebAuthn jest częścią historii sgcAuth, ale nie jest trzecim zarejestrowanym komponentem w tym pakiecie. Jest obsługiwany przez serwer WebAuthn sgcWebSockets i potrzebuje sgcCustomIndy pod spodem.

ObszarSzczegóły
Co to jestW3C Web Authentication Level 2 (WebAuthn): logowanie bezhasłowe kluczami dostępu i kluczami bezpieczeństwa FIDO2, oparte na TsgcWSAPIServer_WebAuthn.
Gdzie się znajdujeTsgcWSAPIServer_WebAuthn to komponent serwerowy, część sgcWebSockets Enterprise i All-Access, a nie klient zarejestrowany przez ten pakiet.
Czego potrzebujeZmodyfikowanej biblioteki Indy, którą sgcCustomIndy dostarcza jako dodatek dla sgcWebSockets Core.
Jak jest dodawanyStrona zamówienia dodaje sgcCustomIndy do twojego koszyka automatycznie przy zamawianiu sgcAuth. Posiadasz już licencję? Usuń pozycję przy finalizacji zamówienia, w obu przypadkach bez dodatkowych opłat.
Strona klienckaAplikacja JavaScript po stronie przeglądarki prowadzi ceremonię WebAuthn; sgcHTML dostarcza gotowy komponent UI logowania WebAuthn, który współpracuje z serwerem.
PasskeysLogowanie bez nazwy użytkownika z poświadczeniami odkrywalnymi, autouzupełnianie passkey przez mediację warunkową, kilka kluczy passkey na użytkownika, wykrywanie synchronizacji lub przypisania do urządzenia przez BackupEligible i BackupState, oraz wykrywanie sklonowanego authenticatora.

Kody drugiego składnika, każdy zaakceptowany tylko raz

TsgcTOTPAuthenticator implementuje TOTP (RFC 6238) i HOTP (RFC 4226), kody wyświetlane przez Google Authenticator, Microsoft Authenticator i każdą inną aplikację authenticator.

MożliwośćAPIUwagi
SekretyGenerateSecret, SecretLengthLosowy sekret Base32, domyślnie 20 bajtów, do zapisania przy rekordzie użytkownika.
Provisioning QRGetProvisioningURI, IssuerBuduje URI otpauth://totp/ z wydawcą, algorytmem, liczbą cyfr i okresem, gotowe do wyrenderowania jako kod QR.
Weryfikacja koduVerifyCode, WindowAkceptuje bieżący krok czasowy oraz Window kroków przed nim i po nim, domyślnie 1, więc telefon z zegarem przesuniętym o kilka sekund nadal loguje.
Ochrona przed powtórzeniemVerifyCode z aLastTimeStepAkceptuje wyłącznie krok czasowy późniejszy niż ostatnio użyty i zwraca dopasowany krok, więc kod nigdy nie może zostać użyty dwukrotnie.
Liczniki HOTPGenerateHOTP, VerifyHOTPWariant oparty na liczniku dla tokenów sprzętowych, z oknem wyprzedzenia, które resynchronizuje licznik po udanej weryfikacji.
Kody odzyskiwaniaGenerateRecoveryCodesWypełnia dowolny TStrings unikalnymi jednorazowymi kodami, będącymi rozwiązaniem awaryjnym, gdy użytkownik traci urządzenie.
Algorytmy i cyfryAlgorithm, Digits, PeriodHMAC-SHA1, domyślny obsługiwany przez każdą aplikację, HMAC-SHA256 lub HMAC-SHA512, z kodami od 6 do 8 cyfr i dowolnym okresem.

Logowanie do Active Directory przez TLS

TsgcLDAPClient to klient LDAP v3 (RFC 4511), który uwierzytelnia użytkowników względem Active Directory lub dowolnego innego katalogu LDAP i odczytuje ich grupy.

MożliwośćAPIUwagi
PołączenieHost, Connect, BindDN, Password, BaseDNSerwer katalogowy, konto serwisowe używane do wyszukiwań oraz podstawa wyszukiwań użytkowników i grup.
LDAPS i StartTLSSecurity, TLSOptionsldapsecLDAPS dla niejawnego TLS na porcie 636 lub ldapsecStartTLS na porcie 389. Odrzucone StartTLS zamyka połączenie, klient nigdy nie wraca do tekstu jawnego.
Tryby logowaniaAuthenticationMode, UserSearchFilterldapamUPN, ldapamDownLevel, ldapamSearchThenBind lub ldapamDN zamieniają wpisaną nazwę na nazwę bindowania.
AuthenticateAuthenticateSprawdza nazwę użytkownika i hasło w jednym wywołaniu i zwraca DN użytkownika.
Zagnieżdżone grupyGetUserGroupsBezpośrednie wartości memberOf, albo każda grupa osiągalna przez inne grupy dzięki regule Active Directory LDAP_MATCHING_RULE_IN_CHAIN.
Przeszukiwanie stronicowaneSearch, PageSize, SizeLimit, TimeLimitSimple Paged Results są używane automatycznie, domyślnie 500 wpisów na stronę, a wpisy i referrale wracają na liście TsgcLDAPEntries.
Bezpieczne bindyBind, WhoAmI, LastResultCode, LastErrorMessageDN z pustym hasłem jest odrzucany bez kontaktu z serwerem, zamykając lukę niezuwierzytelnionego bindu z RFC 4513.
WątkiKażda metoda publicznaWywołania są serializowane, więc jedna instancja może obsłużyć żądania logowania wielowątkowego serwera HTTP lub WebSocket.

Jednokrotne logowanie SAML 2.0

TsgcSAMLServiceProvider zamienia aplikację webową Delphi w service providera SAML 2.0 dla Microsoft Entra ID, Okta, AD FS, Google Workspace, Keycloak i innych dostawców tożsamości.

MożliwośćAPIUwagi
Tożsamość usługodawcyEntityID, AssertionConsumerServiceURLEntity ID oraz adres URL ACS, który odbiera odpowiedzi przesyłane przez przeglądarkę.
Metadane w obie stronyGetMetadata, LoadIdPMetadataGetMetadata tworzy metadane SP do zarejestrowania u IdP. LoadIdPMetadata wypełnia IdPEntityID, IdPSSOURL, IdPSSOBinding i IdPCertificates.
Bindingi Redirect i POSTGetAuthnRequestRedirectURL, GetAuthnRequestPostFormAdres URL HTTP-Redirect ze skompresowanym AuthnRequest, albo automatycznie wysyłany formularz HTTP-POST.
Podpisane żądaniaSignAuthnRequests, SPCertificate, SPPrivateKeyPodpisuje AuthnRequest dla dostawców tożsamości, którzy tego wymagają.
Tylko zaufane kluczeIdPCertificates, AllowSHA1Podpisy są sprawdzane wyłącznie względem skonfigurowanych certyfikatów IdP, nigdy certyfikatu osadzonego w wiadomości. RSA-SHA256, RSA-SHA384 i RSA-SHA512 z kanonikalizacją wyłączną, SHA-1 tylko gdy dozwolone.
Ochrona przed signature wrappingProcessResponseOdpowiedź musi zawierać dokładnie jedną asercję jako bezpośrednie dziecko, a podpis musi odnosić się do tego elementu.
Walidacja asercjiClockSkew, MaxAssertionAge, AllowIdPInitiatedWalidowane są wydawca, odbiorca, miejsce docelowe, InResponseTo i okno ważności, z cache asercji chroniącym przed powtórzeniem. Logowanie inicjowane przez IdP pozostaje wyłączone, dopóki nie zostanie włączone.
WynikTsgcSAMLResultNameID, NameIDFormat, SessionIndex, AuthnInstant, Attributes z przyjaznymi nazwami oraz czytelny ErrorMessage.

Loguj się przez dowolnego dostawcę OpenID

TsgcHTTP_OIDC_Client implementuje OpenID Connect Core 1.0 na bazie klienta OAuth2, więc lokalne przekierowanie, tokeny odświeżania, DPoP, kod urządzenia, unieważnianie i introspekcja są dostępne od razu.

MożliwośćAPIUwagi
DiscoveryOIDCOptions.Issuer, Discover, DiscoveryDocumentOdczytuje konfigurację dostawcy i wypełnia adresy URL autoryzacji i tokenu, JWKSURI, UserInfoEndpoint i EndSessionEndpoint.
LogowanieStartOtwiera przeglądarkę i uruchamia przepływ Authorization Code przez lokalny serwer przekierowania klienta OAuth2.
PKCE i nonceOIDCOptions.UsePKCE, NoncePKCE jest domyślnie włączone, a każde logowanie wysyła świeży nonce, który token ID musi zwrócić.
Walidacja tokenu IDIDToken, IDTokenClaims, IDTokenValid, OnOIDCIDTokenSprawdzane są podpis, wydawca, odbiorca, wygaśnięcie z ClockSkew oraz nonce. Akceptowane są wyłącznie RS256, RS384, RS512, ES256 i ES384, none i algorytmy HS są zawsze odrzucane.
Rotacja kluczyTsgcOIDCJWKS, RefetchIntervalBezpieczny wątkowo cache kluczy podpisujących dostawcy. Nieznany identyfikator klucza wywołuje nowe pobranie, więc rotacja kluczy nie wymaga restartu.
Walidacja po stronie serwerasgcOIDC_ValidateIDToken, OIDCOptions.AllowedTenantsWaliduje tokeny bearer otrzymywane przez Twoje API REST lub serwer WebSocket względem tego samego cache kluczy, i ogranicza wielodzierżawcze aplikacje Entra ID do akceptowanych organizacji.
UserinfoGetUserInfoZwraca JSON profilu zalogowanego użytkownika.

OAuth2 dla SMTP, IMAP i POP3

TsgcMailOAuth2 uzyskuje i odświeża tokeny, których Microsoft 365 i Gmail oczekują dla poczty, i zamienia je na ciągi SASL XOAUTH2 i OAUTHBEARER (RFC 7628), które wysyła Twój klient pocztowy.

MożliwośćAPIUwagi
Gotowe ustawienia dostawcówProvider, TenantId, ClientIdmopMicrosoft365 lub mopGmail z właściwymi endpointami. mopCustom przyjmuje CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL i CustomScope.
Zakresy z protokołówProtocols, GetScopeDowolna kombinacja mpSMTP, mpIMAP i mpPOP3 żąda odpowiednich zakresów, z offline_access w Microsoft 365.
Przeglądarka lub kod urządzeniaFlow, LocalServerOptions, OnDeviceCodemofAuthorizationCodePKCE otwiera przeglądarkę z przekierowaniem loopback, mofDeviceCode pasuje do usług i konsol.
Cykl życia tokenuStart, Refresh, AccessToken, RefreshToken, ExpiresAt, OnTokensChangedRefresh odświeża token dostępu synchronicznie, a OnTokensChanged uruchamia się za każdym razem, więc możesz zapisać nowy token odświeżania.
Ciągi SASLGetXOAuth2, GetOAuthBearerPoczątkowe odpowiedzi Base64 dla AUTH XOAUTH2 i AUTH OAUTHBEARER. Warianty Raw i funkcje sgcGetXOAuth2 pomagają przy debugowaniu i innych źródłach tokenów.
Niezależność od transportuHTTPClientOptionsKomponent nigdy nie otwiera połączenia pocztowego. Użyj Indy TIdSMTP, TIdIMAP4 lub TIdPOP3, lub dowolnej biblioteki pocztowej potrafiącej wysłać surowe polecenie SASL.

RFC, kompilatory i platformy docelowe

Specyfikacje standardowe i te same źródła we wszystkich obsługiwanych kompilatorach.

ObszarSzczegóły
Standardy OAuth2OAuth 2.0 (RFC 6749), PKCE (RFC 7636), Device Authorization Grant (RFC 8628), Token Revocation (RFC 7009), Token Introspection (RFC 7662), DPoP (RFC 9449).
Standardy JWTJSON Web Token (RFC 7519), JSON Web Signature (RFC 7515), JSON Web Encryption (RFC 7516), ML-DSA dla JOSE (RFC 9964).
Standard WebAuthnWeb Authentication Level 2 (W3C), przez serwer WebAuthn sgcWebSockets.
Standardy tożsamościTOTP (RFC 6238), HOTP (RFC 4226), LDAP v3 (RFC 4511), SAML 2.0 (OASIS), OpenID Connect Core 1.0, SASL OAUTHBEARER (RFC 7628) i XOAUTH2.
PlatformyOba klienty to zwykłe HTTPS i lokalne podpisywanie, więc każda platforma Delphi jest objęta: Windows Win32/Win64, Linux 64-bit, macOS, iOS i Android.
KompilatoryDelphi i C++ Builder od 7 do 13.
EdycjeKlient OAuth2 i klient JWT są dostarczane także wewnątrz sgcWebSockets od edycji Standard wzwyż, komponenty WebAuthn, TOTP, LDAP, SAML, OpenID Connect i Mail OAuth2 w edycji Enterprise, a All-Access zawiera wszystko.
LicencjonowanieProdukt samodzielny. Środowisko uruchomieniowe sgcWebSockets Core jest dołączone, a pełny kod źródłowy jest w zestawie.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Twórz z sgcAuth

Pobierz bezpłatną wersję próbną i uzyskaj swój pierwszy token dostępu albo podpisany JWT z Delphi lub C++ Builder.