Google Workspace ukida Less Secure apps – podesite OAuth

Jovan Ranitović

Google je najavio da ukida logovanje third-party aplikacija user/pass metodom, odnosno “manje-sigurnim” aplikacijama koje koriste samo korisničko ime i lozinku i uvodi mogućnost logovanje pomoću OAuth2 metode. U ovom tekstu ćemo vam pojasniti kako da sami kreirate i koristite OAuth2 kredencijale za vašu aplikaciju, kako biste mogli da nastavite korišćenje Google-ovog SMTP-a, njihovih API-ja, i sličnih servisa. 

Šta je zapravo OAuth2?

OAuth2 je protokol za autorizaciju koji omogućava aplikacijama da pristupe podacima korisnika na drugim platformama bez potrebe da aplikacija dobije korisničku lozinku. Umesto toga, koristi se kombinacija posebnih tokena (Access i Refresh tokena) kako bi se osigurala bezbednost i kontrolisani pristup podacima.

OAuth2 radi na sledećem principu:

  1. Autorizacioni zahtevi – Kroz vašu aplikaciju, pristupa se Gmail-ovom API-ju radi dobijanja dozvole
  2. Autorizacioni kod – Google vraća kratkotrajni autorizacioni kod aplikaciji, da bi ona mogla nastaviti proces u ime korisnika
  3. Pribavljanje tokena – Nakon što je prethodni proces završen, autorizacioni kod se menja za Access token i Refresh Token; i konačno
  4. Omogućavanje API-ja da uradi šta treba, u ovom slučaju da Gmail pošalje poštu.

Prednosti OAuth2

  • Bezbednost: Korisnik ne mora da deli lozinku sa aplikacijom, što svakako smanjuje rizik od kompromitovanja kredencijala;
  • Kontrola pristupa: Korisnik može odobravati ili uklanjati pristup u bilo kom trenutku;
  • Funkcionalnost: OAuth2 protokol se može koristiti za različite svrhe, servise i aplikacije koje komuniciraju međusobno.

Kako da napravim OAuth2 kredencijale?

Za početak, potrebno je da se ulogujete u vašu Workspace konzolu, koja se nalazi na linku: https://console.cloud.google.com/apis, gde ćete videti interfejs nalik ovome:

U prvom koraku se kreira novi OAuth2 identitet, što se postiže klikom na dugme “+ Create Credentials”, prikazano na slici ispod:

 U ovom padajućem meniju, potrebno je izabrati OAuth client ID. Novi interfejs vodi na izbor tipa kredencijala koje je potrebno kreirati, gde je potrebno izabrati “Web Application”.

Kada je odabrano polje “Web Application”, pojavljuje se još jedan novi dijalog, gde treba upisati ime projekta:

Sada, klikom na “Create” dobijate kreirane kredencijale koje je potrebno postaviti u aplikaciji i testirati je. Ako je sve prošlo kako treba, vaša aplikacija je ponovo u mogućnosti da šalje mailova sa Google-ovih servisa.

Testiranje SMTP

Testirali smo da li sve još uvek radi na „stari način“ koristeći jednostavnu PHPMailer skriptu, sa SMTP podacima WorkSpace naloga: 

 

Iako je Google najavio da od 30.09.2024. godine ukida podršku za ovaj tip slanja, odnosno da ovakvo slanje neće prolaziti i da će korisnici dobijati greške sa slanjem i isporukom – nama je test prošao i mail je isporučen. Vidimo da su update pauzirali do januara 2025.  

Kako je u u primeru iznad klasična SMTP autorizacija, tj. koristi se tzv. “Less secure” logovanje, koje je Google počeo da ukida, pitanje je dana kada će ovakav način autorizacije postati problematičan, zbog čega se savetuje korišćenje OAuth2 tip logovanja aplikacijama koje koriste mail, kalendar, i slično.

Ono šta je potrebno uraditi u slučaju da dobijete odgovor servera da korisničko ime i lozinka nisu tačni (a poželjno i pre nego nastanu problemi), prvo proverite kredencijale, a potom, dodajte izmene u vaš kod:

// Dodavanje OAuth2 klase
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 
use League\OAuth2\Client\Provider\Google;  // klasa za OAuth2
// Postavka OAuth2 konfiguracije 
$clientId = 'YOUR_GOOGLE_CLIENT_ID';
$clientSecret = 'YOUR_GOOGLE_CLIENT_SECRET';
$refreshToken = 'YOUR_REFRESH_TOKEN';

„Try“ blok je takođe potrebno modifikovati i dodati:

// Konfiguracija OAuth2 
$provider = new Google([ 
    'clientId' => $clientId, 
    'clientSecret' => $clientSecret, 
]); 
$mail->setOAuth( 
    new \PHPMailer\PHPMailer\OAuth([ 
        'provider' => $provider, 
        'clientId' => $clientId, 
        'clientSecret' => $clientSecret, 
        'refreshToken' => $refreshToken, 
        'userName' => 'your_email@yourdomain.com', 
    ])
);

Ovim ste konfigurisali vašu aplikaciju po preporukama koje Google uvodi, i na ovaj način ste sigurni da će vaše aplikacije i dalje komunicirati sa Google servisima i raditi kako vi to i želite.

 

Bez komentara

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *