Delphi Mail OAuth2
Microsoft 365 ve Gmail artık çoğu posta kutusu için düz bir parolayı kabul etmiyor. OAuth2 token'larını alın, taze tutun ve SMTP, IMAP veya POP3 istemcinize tam olarak ihtiyaç duyduğu SASL dizesini verin.
Microsoft 365 ve Gmail artık çoğu posta kutusu için düz bir parolayı kabul etmiyor. OAuth2 token'larını alın, taze tutun ve SMTP, IMAP veya POP3 istemcinize tam olarak ihtiyaç duyduğu SASL dizesini verin.
Exchange Online ve Gmail için OAuth 2.0 erişim token'larını alır ve yeniler; XOAUTH2 ve OAUTHBEARER dizelerini oluşturur. Posta sunucusuyla hiçbir zaman doğrudan konuşmaz, bu yüzden Indy TIdSMTP, TIdIMAP4, TIdPOP3 veya ham bir SASL komutu gönderebilen herhangi bir kütüphaneyle çalışır.
TsgcMailOAuth2 (sgcAuth_Mail_OAuth2 birimi)
SASL OAUTHBEARER (RFC 7628) ve XOAUTH2
Windows, macOS, Linux, iOS, Android
Enterprise ve All-Access, ayrıca sgcAuth paketi. sgcWebSockets .NET içinde de mevcuttur.
Provider ve Protocols'ü seçin, ClientId'i ayarlayın, saklanan refresh token'ı yeniden kullanın veya Start'ı çağırın, ardından posta oturumunu GetXOAuth2 ile doğrulayın.
uses
IdSMTP, sgcAuth_Mail_OAuth2;
// Mail is a form field: Mail: TsgcMailOAuth2;
procedure TForm1.FormCreate(Sender: TObject);
begin
Mail := TsgcMailOAuth2.Create(Self);
Mail.Provider := mopMicrosoft365;
Mail.Protocols := [mpSMTP];
Mail.TenantId := 'contoso.onmicrosoft.com';
Mail.ClientId := 'your-application-id';
Mail.OnTokensChanged := OnMailTokensChanged;
// reuse the stored refresh token, sign in only when it no longer works
Mail.RefreshToken := LoadRefreshToken;
if (Mail.RefreshToken = '') or not Mail.Refresh then
Mail.Start; // opens the browser, PKCE and a loopback redirect
end;
procedure TForm1.OnMailTokensChanged(Sender: TObject; const AccessToken,
RefreshToken: String; const ExpiresAt: TDateTime);
begin
SaveRefreshToken(RefreshToken); // encrypt it in your store
end;
// TIdSMTP with UseTLS = utUseExplicitTLS and AuthType = satNone
procedure TForm1.Authenticate(aSMTP: TIdSMTP);
begin
aSMTP.Connect; // EHLO and STARTTLS
aSMTP.SendCmd('AUTH XOAUTH2 ' + Mail.GetXOAuth2('user@contoso.com'), 235);
end;
// uses: IdSMTP, sgcAuth_Mail_OAuth2
TsgcMailOAuth2 *Mail = new TsgcMailOAuth2(this);
Mail->Provider = mopMicrosoft365;
Mail->Protocols = TsgcMailOAuth2Protocols() << mpSMTP;
Mail->TenantId = "contoso.onmicrosoft.com";
Mail->ClientId = "your-application-id";
Mail->OnTokensChanged = OnMailTokensChanged;
Mail->RefreshToken = LoadRefreshToken();
if (Mail->RefreshToken.IsEmpty() || !Mail->Refresh())
Mail->Start();
IdSMTP1->Connect();
IdSMTP1->SendCmd("AUTH XOAUTH2 " + Mail->GetXOAuth2("user@contoso.com"), 235);
Modern postanın OAuth2 kısmı, sağlayıcı ayrıntıları önceden doldurulmuş tek bir bileşende.
Provider, doğru uç noktalarla mopMicrosoft365 veya mopGmail'i seçer. mopCustom, başka herhangi bir sağlayıcı için CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL ve CustomScope'u alır.
Protocols'ü mpSMTP, mpIMAP ve mpPOP3'ün herhangi bir karışımına ayarlayın; bileşen eşleşen kapsamları ister, Microsoft 365'te offline_access ile birlikte. GetScope, nelerin isteneceğini gösterir.
Flow, mofAuthorizationCodePKCE'yi (tarayıcı artı loopback yönlendirme, bkz. LocalServerOptions) veya servisler ve konsollar için mofDeviceCode'u seçer; burada OnDeviceCode size gösterilecek kodu ve URL'yi verir.
AccessToken, RefreshToken ve ExpiresAt her zaman günceldir. Refresh, erişim token'ını eşzamanlı olarak yeniler ve OnTokensChanged her seferinde tetiklenir; böylece yeni refresh token'ı kalıcı hale getirebilirsiniz.
GetXOAuth2 ve GetOAuthBearer, AUTH XOAUTH2 ve AUTH OAUTHBEARER için Base64 ilk yanıtlarını döndürür. Raw varyantları ve sgcGetXOAuth2 fonksiyonları hata ayıklamaya ve diğer token kaynaklarına yardımcı olur.
Bileşen hiçbir zaman bir posta bağlantısı açmaz. Indy TIdSMTP, TIdIMAP4 veya TIdPOP3'ü ya da ham bir SASL komutu gönderebilen herhangi bir posta kütüphanesini, token isteklerinin TLS'i için HTTPClientOptions ile birlikte kullanın.
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: TsgcMailOAuth2 Tam özellik, metot ve olay referansı, artı Microsoft 365 ve Gmail uygulama kayıt adımları. | Aç | |
| Demo Projesi: Demos\26.Authentication\06.Mail_OAuth2 Tarayıcıda ve cihaz koduyla oturum açma, token yenileme ve AUTH XOAUTH2 ile gönderilen bir test postası. 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: Passkey, SAML SSO, LDAP ve TOTP 2FA ile Delphi Oturum Açma Altı kimlik doğrulama bileşeninin tek bir Delphi uygulamasında nasıl bir araya geldiği. | Aç |