Delphi SAML Tek Oturum Açma
Delphi web uygulamanızı kurumsal kimlik sağlayıcınıza bağlayın. Kullanıcılar Microsoft Entra ID, Okta, AD FS, Google Workspace veya Keycloak ile bir kez oturum açar; sunucunuz imzalı, tamamen doğrulanmış bir kimlik alır.
Delphi web uygulamanızı kurumsal kimlik sağlayıcınıza bağlayın. Kullanıcılar Microsoft Entra ID, Okta, AD FS, Google Workspace veya Keycloak ile bir kez oturum açar; sunucunuz imzalı, tamamen doğrulanmış bir kimlik alır.
SAML 2.0 Web Tarayıcı SSO profilinin hizmet sağlayıcı tarafını uygular: AuthnRequest'i oluşturur, SP meta verisini yayınlar ve tarayıcının geri gönderdiği imzalı yanıtı doğrular. URL'leri TsgcWebSocketHTTPServer veya TsgcHTTPServer gibi herhangi bir HTTP sunucusunda barındırın.
TsgcSAMLServiceProvider (sgcAuth_SAML_SP birimi)
Windows, macOS, Linux, iOS, Android
Enterprise ve All-Access, ayrıca sgcAuth paketi. sgcWebSockets .NET içinde de mevcuttur.
EntityID ve AssertionConsumerServiceURL'yi ayarlayın, IdP meta verisini yükleyin, ardından meta veriyi, oturum açma yönlendirmesini ve Assertion Consumer Service'i HTTP işleyicinizden sunun.
uses
sgcAuth_SAML_SP;
// SAML is a form field: SAML: TsgcSAMLServiceProvider;
procedure TForm1.ConfigureSAML(const aIdPMetadataXML: string);
begin
SAML := TsgcSAMLServiceProvider.Create(nil);
SAML.EntityID := 'https://app.example.com/saml/metadata';
SAML.AssertionConsumerServiceURL := 'https://app.example.com/saml/acs';
// entity ID, SSO URL, binding and signing certificates of the IdP
SAML.LoadIdPMetadata(aIdPMetadataXML);
end;
// GET /saml/metadata: return SAML.GetMetadata and register it in the IdP
// GET /saml/login: redirect the browser to the IdP
function TForm1.LoginURL(const aRelayState: string;
out aRequestID: string): string;
begin
// keep aRequestID for this RelayState, the ACS needs it
Result := SAML.GetAuthnRequestRedirectURL(aRelayState, aRequestID);
end;
// POST /saml/acs: validate the signed response posted by the browser
function TForm1.ValidateResponse(const aSAMLResponse, aRelayState,
aRequestID: string): string;
var
oResult: TsgcSAMLResult;
begin
oResult := TsgcSAMLResult.Create;
try
if SAML.ProcessResponse(aSAMLResponse, aRelayState, aRequestID, oResult) then
Result := oResult.NameID // plus oResult.Attributes and SessionIndex
else
raise Exception.Create(oResult.ErrorMessage);
finally
oResult.Free;
end;
end;
// uses: sgcAuth_SAML_SP
TsgcSAMLServiceProvider *SAML = new TsgcSAMLServiceProvider(this);
SAML->EntityID = "https://app.example.com/saml/metadata";
SAML->AssertionConsumerServiceURL = "https://app.example.com/saml/acs";
SAML->LoadIdPMetadata(IdPMetadataXML);
// GET /saml/login
String RequestID;
String URL = SAML->GetAuthnRequestRedirectURL(RelayState, RequestID);
// POST /saml/acs
TsgcSAMLResult *SAMLResult = new TsgcSAMLResult();
if (SAML->ProcessResponse(SAMLResponse, RelayState, RequestID, SAMLResult))
ShowMessage(SAMLResult->NameID);
delete SAMLResult;
Bağlanması kolay ve kabul ettikleri konusunda katı bir hizmet sağlayıcı, çünkü bir SAML hatası bir oturum açma atlatmasıdır.
GetMetadata, kimlik sağlayıcıya kaydedilecek SP meta verisini üretir. LoadIdPMetadata, IdP meta verisini okur ve IdPEntityID, IdPSSOURL, IdPSSOBinding ile IdPCertificates'i doldurur.
GetAuthnRequestRedirectURL, sıkıştırılmış AuthnRequest ile HTTP-Redirect URL'sini döndürür; GetAuthnRequestPostForm ise otomatik gönderilen bir HTTP-POST formu. SignAuthnRequests, bunları SPCertificate ve SPPrivateKey ile imzalar.
İmzalar yalnızca IdPCertificates'e karşı denetlenir; mesaja gömülü bir sertifikaya asla güvenilmez. Özel kanonikleştirme ile RSA-SHA256, RSA-SHA384 ve RSA-SHA512. AllowSHA1 ayarlanmadıkça SHA-1 reddedilir.
Yanıt, doğrudan alt öğe olarak tam olarak bir assertion içermelidir ve imza tam olarak o öğeye başvurmalıdır; bu, birçok SAML kütüphanesini kırmış olan XML imza sarmalama saldırılarını etkisiz kılar.
ProcessResponse; issuer, audience, destination, InResponseTo değerlerini ve ClockSkew ile MaxAssertionAge ile geçerlilik penceresini doğrular, ayrıca assertion kimliklerinin bir tekrar oynatma önbelleğini tutar. IdP tarafından başlatılan oturum açma, AllowIdPInitiated'ı ayarlayana kadar kapalı kalır.
TsgcSAMLResult; NameID, NameIDFormat, SessionIndex, AuthnInstant, dostça adlarıyla Attributes ve bir şeyler yanlış gittiğinde okunabilir bir ErrorMessage döndürür.
Bu bileşenin uyguladığı standartlar için yetkili kaynaklar.
Bileşen referansına doğrudan bağlanın, kullanıma hazır demo projesini alın ve denemeyi indirin.
| Çevrimiçi Yardım: TsgcSAMLServiceProvider Bu bileşen için tam özellik, metot ve olay referansı. | Aç | |
| Demo Projesi: Demos\26.Authentication\03.SAML_ServiceProvider Bir TsgcWebSocketHTTPServer üzerinde login, ACS ve meta veri URL'leriyle eksiksiz bir hizmet sağlayıcı. sgcWebSockets paketi içinde gelir, denemeyi aşağıdan indirin. | Aç | |
| Teknik Belge (PDF) Delphi ve C++ Builder için özellikler, hızlı başlangıç, kod örnekleri ve yalnızca bu bileşene ait birincil kaynak referansları. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç | |
| Blog: Entra ID, Okta ve AD FS ile Delphi'de SAML Tek Oturum Açma En yaygın üç kimlik sağlayıcı ile adım adım kurulum. | Aç |