OAuth 2.0, yetkili kullanıcı ile Azure üzerinde API işlemleri yapmamızı sağlayan bir protokoldür. Azure üzerinde bulunan kaynaklara özel izinler vermemize olanak sağlar. OAuth, HTTP üzerinde çalışacak şekilde tasarlanmıştır bu sayede istemci (API üzerinden istekte bulunan uygulamalar, geliştiriciler) ile kaynak sahibine (Azure yöneticisi) ait roller bu protokol üzerinden rahatlıkla ayrılabilir şekildedir. İstemciler Azure API üzerinden Azure’da barındırılan uygulamalara erişim isteği gönderir, istek gönderen istemci daha önceden kaynak yöneticisi tarafından yetkilendirildiyse yapmış olduğu isteğe karşılık olarak API’den bir Token (Erişim Belirteci) alır ve bu Token’ı kullanarak Azure üzerinde barındırılan uygulamalara erişebilir.
Bu makalemizde Office 365 kullanıcıları için SMTP protokolüne bağlanmak ve e-posta gönderme işlemi yapabilmek için OAuth kimlik doğrulamasını nasıl kullanacağımızı öğreneceğiz.
Uygulamalarımızın Office 365’e bağlanması ve başarılı bir şekilde istekte bulunabilmesi için aşağıdaki adımların izlenmesi gerekir:
- Azure Token sunucusundan istekte bulunacağınız uygulamaya ait bir token alın.
- İstekte bulunacağınız uygulamalara yapacağınız istekleri aldığınız token ile doğrulayın.
Bazı izin kapsamı dizeleri;
Protokol | İzin Kapsamı Dizesi |
IMAP | https://outlook.office.com/IMAP.AccessAsUser.All |
POP | https://outlook.office.com/POP.AccessAsUser.All |
SMTP YETKİLENDİRME | https://outlook.office.com/SMTP.Send |
Table 1- İzin Kapsamları
Ayrıca offline_access kapsamı için istekte bulunabilirsiniz . Bir kullanıcı offline_access kapsamını onayladığında, uygulamanız Microsoft kimlik platformu belirteç uç noktasından yenileme belirteçleri alabilir. Yenileme belirteçleri uzun ömürlüdür. Uygulamanız, eski erişim belirteçlerinin süresi doldukça yeni erişim belirteçleri alabilir.
SMTP Mail Gönderimi için Azure Yetkilendirmeleri
- Azure Portal üzerinden istekte bulunacağımız uygulamamızı açıyoruz.


- Sol taraftaki menüden API permissions menüsüne tıklıyoruz.

- Açılan yetkilendirme sayfasında uygulamamıza aşağıdaki yetkileri veriyoruz.

Yukarıdaki işlemlerden sonra uygulamamıza SMTP.Send istekleri gönderebileceğiz.
Azure’dan C# ile SMTP.Send Token’ı Almak

Clientid : İstekte bulunacağınız uygulamaya ait Client Id veya Application Id
Tenantid: İstekte bulunacağınız uygulamaya ait Tenant Id
Mailadresi: SMTP Send işlemi için O365’te tanımlı mail adresi.
Şifre: SMTP Send işlemi için O365’te tanımlı mail adresine ait şifre.
Client id ve Tenant Id değerlerimizi Azure Portal üzerinden Home > Registrations > İlgili Uygulamanız > Overview içerisinde Essentials kısmında bulabilirsiniz.
Yukarıdaki kodu çalıştırdığımızda bilgilerimizin doğru olması durumunda result olarak JWT tipinde bir token almış oluruz. Bu token Azure Token sunucusu tarafından üretilir ve SMTP.Send işlemlerimizde kullanabiliriz.
JWT ile Mail Gönderimi C# Kodu

Yukarıdaki kod çalıştırıldığında ,
- GetAccessToken metot’u çalışarak girmiş olduğumuz ClientId, TenantId, MailAdresi ve Şifre bilgilerini kullanarak bir token alır
- Token değeri SendMail metot’una aktarılır.
- Aldığımız token Mail Kit eklentisi ile SaslMechanismOAuth2 servisi kullanılarak oaut2 elde edilir.
- Alınan oauth2 token bilgisi SMTP.Send izin kapsamında Authentication işlemi için kullanılır ve mail gönderimi gerçekleştirilir.