Google Project Console üzerine bağlanıp yeni proje oluştur diyerek ilk adımımızı gerçekleştirelim.
https://console.developers.google.com/iam-admin/projects?
İsmine Powershell diyorum,
Proje oluştuktan sonra, sol tarafta bulunan Navigation Menü üzerinden APIs & Services e giriş yapıp, Enabled APIs & services menüsü altından + Enable APIS And Services e giriş yapalım. Kullanmak istediğimiz, ihtiyacımız olan API yi enable duruma getirelim.
Admin SDK API kullanımını gerçekleştireceğim. Search bar üzerinden direk aratıp üzerine tıklayip aktifleştirme işlemini gerçekleştirelim.
API aktifleştirme işlemini gerçekleştirdikten sonra sol menüde bulunan Credentials alanına tıklayalım.
Açılan sayfa üzerinden Create Credentials diyerek kimlik oluşturalım.
OAuth Client ID seçeneğine tıklayalım. Açılan menüden Configure Consent Screen diyelim,
Açılan sayfa üzerinden External seçeneğini seçerek devam ediyorum,
Buralarda çok takılmamıza gerek kalmayacak gerek gördüğünüz alanları dolduralım,
Save and Continue diyerek ilerleyelim,
Kullanmak istedigimiz scope bilgilerini buradan seçebiliriz, ilerleyen süreçte de seçeceğiz ancak buradan da aktif edebiliriz. Admin SDK ile ilgili olan bir kaç scope seçelim.
Scope seçimi sonrası save and continue diyerek devam edelim.
Test User alanını kaydet diyerek geçiyorum ve summary alanında yaptığımız işlemlerin özet bilgisi çıkmakta. İşlemleri gördükten sonra sol taraftan Credentials alanına tıklayalım.
Hızlıca projemizde yapacağımız işlemleri doldurduktan sonra Credential oluşturmaya dönelim.
Application Type alanı Web application seçilip, name alanını doldurup create diyerek oluşturma işlemini tamamlayalım. Ayrıca Authorized redirects URLs alanına aşağıdaki URL bilgisini girelim.
https://developers.google.com/oauthplayground
Client ID ve Client Secret bilgilerini kaydedelim bir kenara.
Bu adım sonrasında Ouath Playground sayfasına giriş yapalım,
https://developers.google.com/oauthplayground/
ClientID ve Client Secret bilgilerimizi Powershell ile sürekli girmemek için Projemize kayıt edelm. Sağ üst köşede bulunan çarka tıklayip “user your own OAuth credentials” seçeneğine tıklayalım ve açılan alana ClientID ve Secret bilgisini girelim.
İlgili bilgileri girdikten sonra sekme altında bulunan close alanına tıklayip sağ tarafta bulunan API’ler altında ihtiyacımız olan scopeları seçelim. Ben Kullanıcı ve gruplar üzerinde işlem yapacağım için ilgili scopeları seçiyorum.
Authorize APIs seçeneğine seçerek bu API lere erişim için bizden bir onay sayfasına yönleneceğiz. Burada yetkili olan Admin hesabı ile işlemleri onaylamamız gerekmektedir.
Onay sonrasında Authorization code verecek sistem bize, kenara kaydedelim. Ondan sonra Exchange authorization code for tokens diyerek Refresh token ve Access token bilgisini alıp kenara kaydedelim tekrardan.
Bu işlemde tamamlandıktan sonra artık Powershell’e giriş yapabiliriz 🙂
Aşağıdaki alanı powershellimizin en üstüne yapıştıralım. ClientID, Secret alanını ilk kimlik bilgileri oluşturduğumuz alanda ki bilgileri girelim. RefreshToken alanını ise yukarıda ki ekranda aldığımız bilgiyi girelim.
access_token saatlik kullanım hakkı vermek ile birlikte, refresh_token ise biz bir sonraki parola değiştirme işlemine kadar ilgili token ile çalışabilmemize müsade edecek.
$ClientID = "20744203XXXXXXXXXXXXXXXrcontent.com"; $Secret = "GOCSPXXXXXXXXXXXXaTVbydLbg"; $RedirectURI = "urn:ietf:wg:oauth:2.0:oob"; $RefreshToken = "1//0XXXXXXXXXXXXXXXXXXKC2_OtJxaInZBC3xV7VSixSI-EajQ"; $RefreshTokenParams = @{ client_id=$clientId; client_secret=$secret; refresh_token=$refreshToken; grant_type='refresh_token'; } $RefreshedToken = Invoke-WebRequest -Uri "https://accounts.google.com/o/oauth2/token" -Method POST -Body $refreshTokenParams | ConvertFrom-Json $AccessToken = $refreshedToken.access_token $pagetoken = $null
Yukarıdaki adımlar ile kimlik doğrulama işlemlerini gerçekleştiriyoruz, bir saat sonrası refresh token ile yeni token otomatik olarak oluşmakta ve bizde sorun yaşamadan kimlik doğrulama işlemlerini gerçekleştiriyoruz.
Authentication işlemi sonrası benim işlemlerim Google Workspace üzerine olduğu için aşağıdaki URL ile Request taleplerimi çağıracağım. XXXX alana Gsuite customerID girilmesi gerekmektedir. Bu bilgiyi admin.google.com a giriş yapıp, Account settings alanı altında bulunan Customer ID de gözüken bilgiyi girmemiz gerekmektedir.
$Request = Invoke-RestMethod -Uri "https://www.googleapis.com/admin/directory/v1/users?customer=XXXX&maxResults=500&orderBy=email&pageToken=$pagetoken&access_token=$accesstoken" -Method GET -ContentType 'application/json'
Aşağıdaki alan ile işlemi tamamlamış oluyoruz. Bundan sonraki süreç bizlerin powershell yetkinliği ile ilerleyecektir.
$ClientID = "20744203XXXXXXXXXXXXXXXrcontent.com"; $Secret = "GOCSPXXXXXXXXXXXXaTVbydLbg"; $RedirectURI = "urn:ietf:wg:oauth:2.0:oob"; $RefreshToken = "1//0XXXXXXXXXXXXXXXXXXKC2_OtJxaInZBC3xV7VSixSI-EajQ"; $RefreshTokenParams = @{ client_id=$clientId; client_secret=$secret; refresh_token=$refreshToken; grant_type='refresh_token'; } $RefreshedToken = Invoke-WebRequest -Uri "https://accounts.google.com/o/oauth2/token" -Method POST -Body $refreshTokenParams | ConvertFrom-Json $AccessToken = $refreshedToken.access_token $pagetoken = $null $Request = Invoke-RestMethod -Uri "https://www.googleapis.com/admin/directory/v1/users?customer=XXXX&maxResults=500&orderBy=email&pageToken=$pagetoken&access_token=$accesstoken" -Method GET -ContentType 'application/json'
Aşağıda suspend olan kullanıcılarımı ögrenmek için bir sorgu yazdım. Biraz daha bilgi vermek gerekirse Request alanını sonradan neden do while döngüsü içerisine aldım. Requesti do while dışında çalıştırdığımda bildigim halde daha az kullanıcı çıktı olarak verildi. Burada API bize bir seferde belirli bir sayı verdiğini görüyoruz. Bu işlemin önüne geçmek için pagetoken işlemini do while işlemine sokarak son adıma kadar pagetoken do while içerisinde tamamlanmasını sağlayacaktır.
Umarım faydalı olmuştur,