Autentikasi Modern kini diaktifkan secara default untuk semua penyewa Microsoft 365/Azure baru karena protokol ini lebih aman daripada Autentikasi Dasar yang tidak digunakan lagi. Otentikasi Modern didasarkan pada Perpustakaan Otentikasi Direktori Aktif dan OAuth 2.0. Itu menggunakan token terbatas waktu, dan aplikasi tidak menyimpan kredensial pengguna. Selain itu, direncanakan untuk sepenuhnya melarang penggunaan Otentikasi Dasar untuk semua klien Microsoft 365. Pada artikel ini, kami akan berfokus pada penggunaan Modern Authentication untuk terhubung melalui klien EWS, SMTP, IMAP, POP dari Aspose.Email for .NET.

Pengaturan prasyarat

Untuk menggunakan Autentikasi Modern, pastikan itu diaktifkan. Namun, untuk penyewa yang dibuat sebelum 1 Agustus 2017, autentikasi modern dinonaktifkan secara default. Di Microsoft 365 admin center, buka Pengaturan > Pengaturan Org > Autentikasi Modern. Dalam flyout autentikasi Modern yang muncul, Anda dapat mengidentifikasi protokol yang tidak lagi memerlukan autentikasi Dasar. Untuk penyewa Microsoft365 baru di Azure, Autentikasi Dasar dinonaktifkan secara default untuk semua aplikasi. Oleh karena itu, teks akan ditampilkan di bagian ini.

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.

Anda dapat mengaktifkan dukungan Autentikasi Dasar untuk penyewa dari portal Azure, buka Azure Active Directory > Properti > Kelola default Keamanan > Aktifkan default Keamanan > No. Untuk informasi selengkapnya, lihat Artikel Dokumentasi Microsoft.

Pendaftaran aplikasi dengan Azure Active Directory

Pertama, Anda perlu melakukan pendaftaran aplikasi dengan Azure Active Directory. Ada dua jenis izin yang dapat digunakan untuk mengakses kotak surat dengan aplikasi Anda. Pilih jenis izin tertentu, bergantung pada aplikasi yang Anda buat:

  • Aplikasi yang menggunakan izin yang didelegasikan memiliki pengguna yang masuk. Dengan kata lain, saat Anda terhubung ke layanan, jendela dialog muncul untuk nama pengguna dan kata sandi. Aplikasi tidak akan pernah memiliki lebih banyak hak istimewa daripada pengguna yang masuk.
  • Aplikasi yang menggunakan izin Aplikasi berjalan tanpa kehadiran pengguna yang masuk. Misalnya, ini adalah aplikasi yang berjalan sebagai layanan latar belakang atau daemon. Hanya administrator yang dapat menyetujui izin aplikasi.

Selain itu, lihat Artikel Dokumentasi Microsoft untuk informasi selengkapnya.

Prosedur pendaftaran tergantung pada jenis izin yang dipilih. Untuk mendaftarkan aplikasi Anda, lihat Artikel Dokumentasi Microsoft.

C# .NET API untuk mengakses server email

Untuk membuat klien EWS, Imap, dan Smtp, kami akan menggunakan Aspose.Email for .NET. Ini adalah perpustakaan yang luar biasa untuk mengimplementasikan aplikasi klien email menggunakan .NET. Menggunakan perpustakaan, Anda dapat dengan mudah terhubung ke dan mengakses server email. Anda dapat menginstal Aspose.Email for .NET melalui NuGet atau unduh DLL-nya.

PM> Install-Package Aspose.Email

Gunakan autentikasi modern dengan EwsClient

Setelah mendaftarkan aplikasi, kita dapat fokus pada penulisan kode yang terdiri dari bagian-bagian berikut:

  • Pertama, dapatkan token otorisasi.
  • Kemudian, gunakan token untuk mengautentikasi.

Mendapatkan token otorisasi

Untuk mendapatkan token, kami akan menggunakan Microsoft Authentication Library (MSAL) for .NET.

Berikut ini adalah langkah-langkah untuk mendapatkan token otorisasi di C#.

  • Tambahkan paket nuget Microsoft.Identity.Client yang berisi binari MSAL.NET.
  • Buat kelas AccessParameters untuk menyimpan kredensial.
  • Terakhir, buat metode yang menerima parameter akses dan gunakan MSAL.NET untuk mendapatkan token akses.

Contoh kode berikut akan bergantung pada jenis autentikasi yang dipilih.

Dapatkan token dengan autentikasi yang didelegasikan

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;
}

Dapatkan token dengan autentikasi aplikasi

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;
}

Menggunakan token untuk mengautentikasi

Setelah itu, setelah berhasil mendapatkan token, mari kita inisialisasi EwsClient.

Menggunakan token dengan autentikasi yang didelegasikan

NetworkCredential credentials = new OAuthNetworkCredential(accessToken);

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

Menggunakan token dengan autentikasi aplikasi

// Gunakan nama pengguna Microsoft365 dan token akses
NetworkCredential credentials = new OAuthNetworkCredential(username, accessToken);

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

Gunakan Autentikasi Modern dengan Klien IMAP, POP, atau SMTP

Akses IMAP, POP, SMTP melalui izin aplikasi tidak didukung. Dengan kata lain, otentikasi yang didelegasikan hanya didukung.

Pendaftaran Aplikasi dengan prosedur Azure Active Directory ditentukan di atas.

Gunakan pusat admin Microsoft 365 untuk mengaktifkan atau menonaktifkan IMAP, POP, SMTP AUTH di kotak surat tertentu

  • Buka pusat admin Microsoft 365 dan buka Pengguna > Pengguna aktif.
  • Pilih pengguna, dan di flyout yang muncul, klik Mail.
  • Di bagian Aplikasi email, klik Kelola aplikasi email.
  • Verifikasi setelan IMAP, POP, SMTP Terotentikasi: tidak dicentang = dinonaktifkan, dicentang = diaktifkan.
  • Terakhir, klik Simpan perubahan.

Menambahkan kode untuk mendapatkan token autentikasi dari server token

Pastikan untuk menentukan cakupan lengkap, termasuk URL sumber daya Outlook.

Untuk mendapatkan token, kami akan menggunakan Microsoft Authentication Library (MSAL) for .NET.

Berikut ini adalah langkah-langkah untuk mendapatkan token otorisasi di C#.

  • Tambahkan paket nuget Microsoft.Identity.Client yang berisi binari MSAL.NET.
  • Buat kelas AccessParameters untuk menyimpan kredensial.
  • Terakhir, buat metode yang menerima parameter akses dan gunakan MSAL.NET untuk mendapatkan token akses.
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;
}

Menggunakan token untuk mengautentikasi

Setelah itu, ketika kita sudah berhasil mendapatkan token, mari kita menginisialisasi ImapClient.

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

Demikian pula, inisialisasi SmtpClient akan terlihat seperti berikut.

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

Dapatkan Lisensi API Gratis

Anda dapat menggunakan Aspose.Email for .NET tanpa batasan evaluasi menggunakan lisensi sementara gratis.

Kesimpulan

Dalam artikel ini, Anda telah mempelajari cara menggunakan autentikasi modern dengan Aspose.Email API untuk menyambungkan ke kotak surat Microsoft365. Selain itu, Anda telah melihat bahwa Anda dapat dengan mudah membuat aplikasi klien email yang memenuhi persyaratan keamanan tingkat lanjut. Anda dapat mempelajari lebih lanjut tentang Aspose.Email menggunakan dokumentasi. Jika Anda memiliki pertanyaan, Anda dapat memposting ke [forum] kami 21.

Lihat juga