Modern Kimlik Doğrulama artık tüm yeni Microsoft 365/Azure kiracıları için varsayılan olarak etkindir çünkü bu protokol, kullanımdan kaldırılan Temel Kimlik Doğrulama’dan daha güvenlidir. Modern Kimlik Doğrulama, Active Directory Kimlik Doğrulama Kitaplığı ve OAuth 2.0’ı temel alır. Zaman sınırlı belirteçler kullanır ve uygulamalar, kullanıcı kimlik bilgilerini saklamaz. Ayrıca, tüm Microsoft 365 istemcileri için Temel Kimlik Doğrulaması kullanımının tamamen yasaklanması planlanmaktadır. Bu yazıda, Aspose.Email for .NET’in EWS, SMTP, IMAP, POP istemcileri aracılığıyla bağlanmak için Modern Kimlik Doğrulamayı kullanmaya odaklanacağız.

Önkoşul ayarları

Modern Kimlik Doğrulamayı kullanmak için etkinleştirildiğinden emin olun. Ancak 1 Ağustos 2017’den önce oluşturulan kiracılar için modern kimlik doğrulama varsayılan olarak kapalıdır. Microsoft 365 yönetim merkezi’nde, Ayarlar > Kuruluş Ayarları > Modern Kimlik Doğrulama’ya gidin. Görünen Modern kimlik doğrulama açılır penceresinde, artık Temel kimlik doğrulama gerektirmeyen protokolleri belirleyebilirsiniz. Azure’daki yeni Microsoft365 kiracıları için Temel Kimlik Doğrulama tüm uygulamalar için varsayılan olarak devre dışıdır. Bu nedenle, metin bu bölümde görüntülenecektir.

Your organization has security defaults enabled, which means modern authentication to Exchange Online is required, and basic authentication connections are blocked.
You must turn off security defaults in the Azure portal before you can change any settings here.

Kiracı için Temel Kimlik Doğrulama desteğini Azure portalından etkinleştirebilirsiniz, Azure Active Directory > Özellikler > Güvenlik varsayılanlarını yönet > Güvenlik varsayılanlarını etkinleştir > “Hayır” seçeneğine gidin. Daha fazla bilgi için Microsoft Belgelendirme Makalesi’ne bakın.

Azure Active Directory ile uygulama kaydı

Öncelikle Azure Active Directory ile uygulama kaydı gerçekleştirmek gerekiyor. Uygulamanızla posta kutularına erişmek için kullanılabilecek iki tür izin vardır. Oluşturduğunuz uygulamaya bağlı olarak belirli bir izin türü seçin:

  • Yetki verilmiş izinleri kullanan uygulamalarda oturum açmış bir kullanıcı bulunur. Başka bir deyişle, servise bağlandığınızda kullanıcı adı ve şifre için bir iletişim penceresi açılır. Uygulama hiçbir zaman oturum açmış bir kullanıcıdan daha fazla ayrıcalığa sahip olamaz.
  • Uygulama izinlerini kullanan uygulamalar, oturum açmış bir kullanıcı olmadan çalışır. Örneğin, bunlar arka plan hizmetleri veya arka plan programları olarak çalışan uygulamalardır. Uygulama izinlerine yalnızca bir yönetici izin verebilir.

Ayrıca, daha fazla bilgi için Microsoft Dokümantasyon Makalesine bakın.

Kayıt prosedürü, seçilen iznin türüne bağlıdır. Uygulamanızı kaydettirmek için Microsoft Dokümantasyon Makalesine bakın.

E-posta sunucularına erişmek için C# .NET API

EWS, Imap ve Smtp istemcilerini oluşturmak için Aspose.Email for .NET kullanacağız. .NET kullanarak e-posta istemci uygulamaları uygulamak için harika bir kitaplıktır. Kitaplığı kullanarak e-posta sunucularına kolayca bağlanabilir ve erişebilirsiniz. Aspose.Email for .NET’i NuGet veya DLL’sini indir aracılığıyla yükleyebilirsiniz.

PM> Install-Package Aspose.Email

EwsClient ile modern kimlik doğrulamayı kullanın

Uygulamayı kaydettikten sonra, aşağıdaki bölümlerden oluşacak olan kodu yazmaya odaklanabiliriz:

  • İlk olarak, yetkilendirme jetonunu alın.
  • Ardından, kimlik doğrulaması için belirteci kullanın.

Yetkilendirme jetonunu alma

Belirteci almak için .NET için Microsoft Kimlik Doğrulama Kitaplığı (MSAL) kullanacağız.

C# dilinde yetkilendirme belirtecini alma adımları aşağıdadır.

  • MSAL.NET’in ikili dosyalarını içeren Microsoft.Identity.Client nuget paketini ekleyin.
  • Kimlik bilgilerini depolamak için bir AccessParameters sınıfı oluşturun.
  • Son olarak, erişim parametrelerini kabul eden ve bir erişim belirteci almak için MSAL.NET’i kullanan bir yöntem oluşturun.

Aşağıdaki kod örnekleri, seçilen kimlik doğrulama türüne bağlı olacaktır.

Temsilci kimlik doğrulaması ile bir belirteç alın

public class AccessParameters
{
    public string TenantId { get; set; }
    public string ClientId { get; set; }
    public string RedirectUri { get; set; } = "http://localhost";
    public string[] Scopes { get; set; } = { "https://outlook.office365.com/EWS.AccessAsUser.All" };
}

public static async Task<string> GetAccessToken(AccessParameters accessParameters)
{
    var pca = PublicClientApplicationBuilder
                            .Create(accessParameters.ClientId)
                            .WithTenantId(accessParameters.TenantId)
                            .WithRedirectUri(ccessParameters.RedirectUri)
                            .Build();

    var result = await pca.AcquireTokenInteractive(accessParameters.Scopes)
        .WithUseEmbeddedWebView(false)
        .ExecuteAsync();

    return result.AccessToken;
}

Uygulama kimlik doğrulaması ile jeton alın

public class AccessParameters
{
    public string TenantId { get; set; }
    public string ClientId { get; set; }
    public string ClientSecret { get; set; }
    public string[] Scopes { get; set; } = { "https://outlook.office365.com/.default" };
}

public static async Task<string> GetAccessToken(AccessParameters accessParameters)
{
    var cca = ConfidentialClientApplicationBuilder
        .Create(accessParameters.ClientId)
        .WithClientSecret(accessParameters.ClientSecret)
        .WithTenantId(accessParameters.TenantId)
        .Build();

    var result = await cca.AcquireTokenForClient(accessParameters.Scopes).ExecuteAsync();

    return result.AccessToken;
}

Kimlik doğrulaması için belirteci kullanma

Bundan sonra, başarılı bir şekilde bir belirteç elde ettiğimizde EwsClient‘yi başlatalım.

Yetki verilmiş kimlik doğrulaması ile belirteci kullanma

NetworkCredential credentials = new OAuthNetworkCredential(accessToken);

using var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials);

Belirteci uygulama kimlik doğrulaması ile kullanma

// Microsoft365 kullanıcı adını ve erişim belirtecini kullanın
NetworkCredential credentials = new OAuthNetworkCredential(username, accessToken);

using var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials);

IMAP, POP veya SMTP İstemcileriyle Modern Kimlik Doğrulamayı Kullanın

Uygulama izinleri üzerinden IMAP, POP, SMTP erişimi desteklenmez. Başka bir deyişle, yetki verilen kimlik doğrulaması yalnızca desteklenir.

Azure Active Directory ile Uygulama kaydı prosedürü yukarıda tanımlanmıştır.

Belirli posta kutularında IMAP, POP, SMTP AUTH’yi etkinleştirmek veya devre dışı bırakmak için Microsoft 365 yönetim merkezini kullanın

  • Microsoft 365 yönetim merkezini açın ve Kullanıcılar > Etkin kullanıcılar’a gidin.
  • Kullanıcıyı seçin ve açılan açılır pencerede Posta’yı tıklayın.
  • E-posta uygulamaları bölümünde, E-posta uygulamalarını yönet’i tıklayın.
  • IMAP, POP, Kimliği Doğrulanmış SMTP ayarını doğrulayın: işaretlenmemiş = devre dışı, işaretli = etkin.
  • Son olarak, Değişiklikleri kaydet’i tıklayın.

Bir belirteç sunucusundan bir kimlik doğrulama belirteci almak için kod ekleme

Outlook kaynak URL’leri dahil olmak üzere tüm kapsamları belirttiğinizden emin olun.

Belirteci almak için .NET için Microsoft Kimlik Doğrulama Kitaplığı (MSAL) kullanacağız.

C# dilinde yetkilendirme belirtecini alma adımları aşağıdadır.

  • MSAL.NET’in ikili dosyalarını içeren Microsoft.Identity.Client nuget paketini ekleyin.
  • Kimlik bilgilerini depolamak için bir AccessParameters sınıfı oluşturun.
  • Son olarak, erişim parametrelerini kabul eden ve bir erişim belirteci almak için MSAL.NET’i kullanan bir yöntem oluşturun.
public class AccessParameters
{
    public string TenantId { get; set; }
    public string ClientId { get; set; }
    public string RedirectUri { get; set; } = "http://localhost";
    public string[] Scopes { get; set; } = { 
        "https://outlook.office.com/IMAP.AccessAsUser.All", 
        "https://outlook.office.com/SMTP.Send" };
}

public static async Task<string> GetAccessToken(AccessParameters accessParameters)
{
    var pca = PublicClientApplicationBuilder
                            .Create(accessParameters.ClientId)
                            .WithTenantId(accessParameters.TenantId)
                            .WithRedirectUri(ccessParameters.RedirectUri)
                            .Build();

    var result = await pca.AcquireTokenInteractive(accessParameters.Scopes)
        .WithUseEmbeddedWebView(false)
        .ExecuteAsync();

    return result.AccessToken;
}

Kimlik doğrulaması için belirteci kullanma

Bundan sonra, başarılı bir şekilde bir belirteç elde ettiğimizde, ImapClient‘yi başlatalım.

var imapClient = new ImapClient(
    "outlook.office365.com", 
    993, 
    username, 
    accessToken, 
    true);

Benzer şekilde, SmtpClient başlatma aşağıdaki gibi görünecektir.

var smtpClient = new SmtpClient(
    "smtp.office365.com",
    587, 
    username,
    accessToken, 
    true);

Ücretsiz API Lisansı Alın

Aspose.Email for .NET’i ücretsiz geçici lisans kullanarak değerlendirme sınırlamaları olmaksızın kullanabilirsiniz.

Çözüm

Bu makalede, Microsoft365 posta kutularına bağlanmak için Aspose.Email API ile modern kimlik doğrulamayı nasıl kullanacağınızı öğrendiniz. Ayrıca, gelişmiş güvenlik gereksinimlerini karşılayan e-posta istemci uygulamalarını kolayca oluşturabileceğinizi gördünüz. Belgeleri kullanarak Aspose.Email hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir sorunuz olursa forumumuza mesaj gönderebilirsiniz.

Ayrıca bakınız