Exchange Online OAuth2 IMAP POP SMTP Authentication Ayarları

1.Adım – Azure (Entra) İçerisinde App Oluşturmak

Azure (Entra) uygulaması kullanarak OAuth Token’i almak için istemci kimlik bilgisi akışı kullanacağız. Bu token POP/IMAP türünde başarılı bağlantı kurduktan sonra Azure app içerisinde tanımlı ID bilgilerini kullanarak, eski basic auth. kullanan servisleriniz için geliştirme yapabilirsiniz.

Microsoft Entra admin center içerisinden sırasıyla Applications/App registrations/New registration tıklayarak app oluşturacağız.

App ismini ve hesap tipi tercihini yapacağız. Mevcut mail hesaplarının token almasını istediğimiz için sadece oturum açılmış tenant erişebilir diyoruz.

2.Adım – Azure App API Yetkilerinin Tanımlanması

Imap access uygulaması oluşturulduktan token bilgisini alabilmemiz için API izinlerini vermemiz gerekiyor. Oluşturduğumuz uygulamanın içersinden sırasıyla, API permissions/Add a permission/APIs my organization users/Office 365 Excgange Online/Application Permissions tıklıyoruz. Karşınıza açılır listeler halinde yetkiler gelecektir. Aşağıda yazılı tek tek işaretleyip uygulamamız için yetkilendirmemiz gerekiyor.

  • full_access_as_app
  • IMAP.AccessAsAP
  • Mail.Read
  • Mail.Send
  • POP.AccessAsApp

API yetkileri tanımlandıktan sonra (kullanıcılarda admin yetkisi istemeden açılması için) yine API permissions ekranındayken “Grant admin consent for <tenant name>” ile izin vermemiz gerekiyor.

3.Adım Exchange Online İçerisinde Service Principal Hesabının Açılması

Powershell kullanarak Exchange Online Management modülünü kuracağız.

  • Install ExchangeOnlineManagement 
  • Install-Module -Name ExchangeOnlineManagement
  • Import-Module ExchangeOnlineManagement
  • Connect-ExchangeOnline -Organization

Daha sonra Exchange Online içerisinde yeni service principal hesabı oluşturacağız. Burada dikkat edilmesi gereken nokta, yeni bir service principal hesabı oluşuturuluken istenilen ObjectId bilgisi Enterprise applications menüsü içerisinde yazılıdır! Bir sonraki adımda ise oluşturduğumuz uygulama için istediğimiz mailboxlara erişim yetkisi atayacağız.

  • New-ServicePrincipal -AppId “<APPLICATION_ID>” -ObjectId “<ENTERPRISE_OBJECT_ID>”
  • Set-ServicePrincipal -Identity “<ENTERPRISE_OBJECT_ID>” -DisplayName “<APP_DISPLAY_NAME>”
  • Get-ServicePrincipal | fl
  • Add-MailboxPermission -Identity “<EMAIL_ADDRESS>” -User “<ENTERPRISE_OBJECT_ID>” -AccessRights FullAccess

NOT: Uygulamanızdan token alabilmemiz için scope adresimiz https://outlook.office365.com/.default olması gerekiyor.

Yukarıdaki adımları eksiksiz yaptıysak buradaki bağlantıyı kullanarak Get-IMAPAccessToken.ps1 powershell scripti ile imap oauth2 testimizi gerçekleştirebiliriz.

Test sonrası eğer “A1 NO AUTHENTICATE failed” uyarısını alırsanız 3. adımda bir hatanız olabilir. Service principal hesabınızı oluştururken kullandığınız object id değeri, enterprise applications içerisindeki Object ID değeri ile aynı olup olmadığını kontrol etmelisiniz. Eğer ID numaraları aynı ise service principal hesabını aşağıdaki powershell scripti ile kaldırıp, yeniden oluşturmanız gerekebilir.

  • Remove-ServicePrincipal -Identity “<ENTERPRISE_OBJECT_ID>”

1 thought on “Exchange Online OAuth2 IMAP POP SMTP Authentication Ayarları”

  1. Great post. I was checking constantly this blog and I am impressed!
    Extremely useful info particularly the last part :
    ) I care for such info much. I was seeking this particular information for
    a long time. Thank you and best of luck.

    Reply

Leave a Comment