Giriş ekranı, her müşterinin hakkında bir fikri olduğu tek iş uygulaması parçasıdır. Entra ID hesabımızla giriş yapabilir miyiz? Passkey'leri destekliyor mu? Denetçilerimiz iki faktörlü doğrulama istiyor. Kullanıcılarımız Active Directory'de, neden başka bir parolaya ihtiyaçları var? Ve uygulamanızın gönderdiği posta, Microsoft 365'in SMTP ayarlarındaki parolayı reddettiği gün çalışmayı durdurdu.
Bu soruların her biri kendi özelliğine, kendi XML'ine veya ASN.1'ine ve neredeyse doğru olmanın kendine özgü yollarına sahip bir protokoldür. Yeni kurumsal kimlik doğrulama bileşenleri bunları Delphi bileşenleri olarak yanıtlar. sgcWebSockets'in Enterprise ve All-Access sürümlerinde ve sgcAuth paketinde yer alırlar, aynı bileşenler sgcWebSockets .NET'in de bir parçasıdır.
Kullanıcıların Beklediği Şekilde Passkey'ler
WebAuthn sunucusu artık insanların passkey'lerden bahsederken gerçekte ne kastettiğini kapsıyor:
- Kullanıcı adı gerektirmeyen giriş. Kullanıcı bir düğmeye basar, tarayıcı sitenize kayıtlı passkey'leri sunar, ve hesap kimlik bilgisi ile tanımlanır. Yazılacak bir şey yok.
- Otomatik doldurma. Passkey'ler, kayıtlı parolaların yanında, kullanıcı adı alanındaki tarayıcının kendi öneri listesinde görünür, böylece bir giriş sayfası kullanıcılar geçiş yaparken ikisini de sunabilir.
- Kullanıcı başına birden fazla passkey. Telefonda bir tane, dizüstü bilgisayarda bir tane, ikisinin de kaybolduğu gün için çekmecede bir donanım anahtarı.
- Senkronize passkey algılama. Sunucu, platformun yedeklediği ve senkronize ettiği bir passkey ile tek bir cihaza bağlı olanı birbirinden ayırt eder, böylece politikanız onlara farklı davranabilir.
- Kendi veritabanınız. Passkey'ler bileşenin sahip olduğu bir dosyada değil, kullanıcı tablonuzun yanında yaşar.
SAML Tekli Oturum Açma
Büyük müşteriler, personelinin uygulamanızda bir hesabının olmasını istemez. Şirketin zaten kullandığı kimlik sağlayıcısıyla giriş yapmak isterler. TsgcSAMLServiceProvider, uygulamanızı Entra ID, Okta, AD FS, Google Workspace ve Keycloak için bir SAML 2.0 hizmet sağlayıcısı yapar. Kimlik sağlayıcı girişi gerçekleştirir, uygulamanız bir doğrulama (assertion) alır, ve bu doğrulamanın imzası, siz bir kullanıcı adı görmeden önce doğrulanır.
Active Directory ve LDAP Girişi
Şirket ağı içinde çalışan uygulama için kullanıcıların zaten bir parolası vardır: Windows parolaları. TsgcLDAPClient, bir kullanıcı adını ve parolayı Active Directory'ye veya herhangi bir LDAP dizinine karşı, parola ağı asla açık metin olarak geçmeyecek şekilde LDAPS veya StartTLS üzerinden denetler. Security özelliğini ldapsecLDAPS veya ldapsecStartTLS olarak ayarlayın ve Authenticate metodunu çağırın.
Kullanıcının kim olduğunu bilmek sorunun yalnızca yarısını yanıtlar. GetUserGroups, iç içe geçmiş gruplar dahil, hesabın ait olduğu grupları döndürür, böylece “bu kullanıcı bir fatura onaylayıcısı mı” sorusu, kendiniz yazıp hata ayıklamanız gereken özyinelemeli bir arama yerine tek bir çağrı olur.
Bir Kimlik Doğrulayıcı Uygulamasından İki Faktörlü Kodlar
TsgcTOTPAuthenticator, Google Authenticator, Microsoft Authenticator ve diğer tüm TOTP uygulamalarının altı haneli kodlarını üretir ve denetler. Kayıt işlemi bir gizli anahtar ve QR kodu olarak gösterdiğiniz bir URI'dir. Giriş tek bir çağrıdır:
uses
sgcAuth_TOTP, sgcBase_Helpers;
var
oTOTP: TsgcTOTPAuthenticator;
vSecret, vURI: string;
vLastStep: Int64;
begin
oTOTP := TsgcTOTPAuthenticator.Create(nil);
try
oTOTP.Issuer := 'MyApp';
// enrolment: store vSecret with the user, show vURI as a QR code
vSecret := oTOTP.GenerateSecret;
vURI := oTOTP.GetProvisioningURI('john@example.com', vSecret);
// sign-in: vLastStep is the last step accepted for this user, -1 the first time
vLastStep := -1;
if oTOTP.VerifyCode(vSecret, txtCode.Text,
StrToInt64(GetDateTimeUnix(Now)), vLastStep) then
ShowMessage('Signed in') // save vLastStep, this code is now spent
else
ShowMessage('Wrong, expired or already used');
finally
oTOTP.Free;
end;
end;
Bu aşırı yükleme, tekrar oynatma (replay) korumasıdır: daha önce kabul edilmiş bir kod, kendi otuz saniyesi içinde bile olsa reddedilir, böylece birinin omzunun üzerinden okuduğu bir kod kullanıldıktan sonra hiçbir işe yaramaz. Telefonun kaybolduğu gün için GenerateRecoveryCodes, tek kullanımlık kurtarma kodlarıyla bir liste doldurur. Onları parolaları sakladığınız gibi saklayın.
OpenID Connect ile Giriş
TsgcHTTP_OIDC_Client, kullanıcıları herhangi bir OpenID Connect sağlayıcısıyla oturum açtırır. Sağlayıcının keşif belgesini okur, böylece yapılandırma, elle kopyalanmış bir uç nokta listesi yerine bir yayımcı URL'si ve bir istemci kimliğidir. Aldığı ID token'ını doğrular, ve aynı imza anahtarları, her müşteri kiracısının kendi yayımcısıyla imzaladığı Entra ID çok kiracılı uygulamalarından gelenler dahil, kendi REST API'nize ulaşan taşıyıcı (bearer) token'ları doğrular.
Microsoft 365 ve Gmail Postası için OAuth2
Microsoft 365 ve Gmail, SMTP, IMAP ve POP3'ten bir parola değil, OAuth2 bekler. TsgcMailOAuth2, erişim belirtecini alır, yeniler, ve SMTP, IMAP veya POP3 oturumunuzun giriş yapmak için kullandığı XOAUTH2 dizesini oluşturur. Sağlayıcıyı ve protokolleri seçin, istemci kimliğinizi verin, ve OnTokensChanged tetiklendiğinde yenileme belirtecini saklayın. Tarayıcısı olmayan bir hizmet veya konsol uygulaması bunun yerine cihaz kodu akışını kullanabilir.
Demoları Deneyin
Her bileşenin Demos\26.Authentication içinde çalıştırılabilir bir demosu vardır:
01.Passkeys, tarayıcıda kullanıcı adı gerektirmeyen giriş ve otomatik doldurma.02.TOTP, QR kodu ile kayıt, doğrulama ve kurtarma kodları.03.SAML_ServiceProvider, kimlik sağlayıcınıza karşı tekli oturum açma.04.OpenID_Connect, giriş ve token doğrulama.05.LDAP_ActiveDirectory, giriş ve grup üyeliği.06.Mail_OAuth2, OAuth2 ile Microsoft 365 veya Gmail üzerinden posta gönderme.
Belgeler
- Passkeys
- TsgcSAMLServiceProvider
- TsgcLDAPClient
- TsgcTOTPAuthenticator
- TsgcHTTP_OIDC_Client
- TsgcMailOAuth2
Nereden Edinilir
Bileşenler, Delphi, C++ Builder ve .NET için sgcWebSockets'in Enterprise ve All-Access sürümlerine dahildir. Yalnızca kimlik doğrulamaya ihtiyacınız varsa, sgcAuth paketi bunları tek başına sunar. Katma değerlidirler: bir forma birini sürükleyip bırakana kadar mevcut bir uygulamada hiçbir şey değişmez.
Sırada Ne Var
İzleyin
eSeGeCe kanalında, “Delphi login with passkeys, SAML SSO, Active Directory LDAP and TOTP 2FA” başlıklı kısa bir video bulunuyor.
Sorularınız, geri bildirimleriniz veya bunu giriş sayfanıza entegre etme konusunda yardıma mı ihtiyacınız var? Bize ulaşın. Kodu yazan kişilerden bir yanıt alacaksınız.
