OAUTH2 u IMAP a SMTP proti office.com nebo GMail

vložil Radek Červinka 22. října 2022 10:29

Jak velké firmy poskytující email služby přitvrzují v bezpečnosti, vzrůstá požadavek na implementaci těchto pravidel i do našich aplikací. Poslední deadline od MS ohledně finálního odříznutí klasické autentizace u IMAP na office.com mne donutil implementovat "modern autentization" (což je klasicky OAuth2) i do našeho systému. Naštěstí jsem mohl vycházet z otevřeného řešení.

Z historických důvodů mail systém je u nás postaven na Indy, ale pro Synapsi by to bylo podobné. Pro MS je celý mechanismus autentizaci popsán celkem srozumitelně Authenticate an IMAP, POP or SMTP connection using OAuth a to včetně nastavení.

Základní kód, ze kterého jsem vycházel je github.com/geoffsmith82/GmailAuthSMTP, který se dá velmi rozumně použít a jako demo rychle rozchodit (v podstate jen přejmenujete globals.sample.pas na globals.pas, modifikujete ID a můžete zkoušet). Pro synapsi je i řešení Synapse, OAuth2, Imap & Gmail, případně github.com/rvk01/google-oauth2.

Celý systém v podstatě funguje tak, že pro první použití se provede autentizace přes web (z programu se spustí prohlížeč se specifikovanou adresou), zároveň se spustí lokální HTTP server, který odchytí odpověď s tokenem, který se nazývá refresh token. Ten si zapamatujeme, a od té doby ho můžeme používat pro získátní jiného tokenu (access token), který bude používán pro vlastní autentizaci, a který se mění. Zbytek je pak stejný jako u klasického přihlašování.

Pokud budete používat dané řešení proti MS, jen dvě takové poznámky:

  • při registraci aplikace uveďte URI pro přesměrování http://localhost:2132 (tam je namířen ten lokální http server číhající na token)
  • při autentizaci přes web nesmíte být přihlášeni do office, jinak nebude vynucen login a autentizační token bude svázán s přihlášeným uživatelem a IMAP bude vracet "A3 BAD User is authenticated but not connected" (to bolelo, protože chyba je na internetu často, ale řešení nikde)

Podobně je to u SMTP (ale tam to není tak kritické, protože MS nemůže odříznout různé jednodušší zařízení jako kopírky od rozesílání mailů). U POP3 mi to u MS nefunguje, i když by to mělo být od MS podporované.

Tagy: , , ,

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců