تم الآن تمكين المصادقة الحديثة افتراضيًا لجميع مستأجري Microsoft 365 / Azure الجدد لأن هذا البروتوكول أكثر أمانًا من المصادقة الأساسية التي تم إهمالها. تعتمد المصادقة الحديثة على مكتبة مصادقة Active Directory و OAuth 2.0. يستخدم رموزًا محدودة الوقت ، ولا تخزن التطبيقات بيانات اعتماد المستخدم. بالإضافة إلى ذلك ، من المخطط حظر استخدام المصادقة الأساسية تمامًا لجميع عملاء Microsoft 365. في هذه المقالة ، سنركز على استخدام المصادقة الحديثة للاتصال عبر عملاء EWS و SMTP و IMAP و POP من Aspose.Email لـ .NET.

إعدادات المتطلبات المسبقة

لاستخدام المصادقة الحديثة ، تأكد من تمكينها. ومع ذلك ، بالنسبة للمستأجرين الذين تم إنشاؤهم قبل 1 أغسطس 2017 ، يتم إيقاف تشغيل المصادقة الحديثة افتراضيًا. في مركز إدارة Microsoft 365 ، انتقل إلى الإعدادات> إعدادات المؤسسة> المصادقة الحديثة. في قائمة المصادقة الحديثة التي تظهر ، يمكنك تحديد البروتوكولات التي لم تعد تتطلب المصادقة الأساسية. بالنسبة إلى مستأجري Microsoft365 الجدد في Azure ، يتم تعطيل المصادقة الأساسية افتراضيًا لجميع التطبيقات. لذلك ، سيتم عرض النص في هذا القسم.

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.

يمكنك تمكين دعم المصادقة الأساسية للمستأجر من بوابة Azure ، انتقل إلى Azure Active Directory> الخصائص> إدارة افتراضيات الأمان> تمكين افتراضيات الأمان> لا. لمزيد من المعلومات ، راجع مقالة وثائق Microsoft.

تسجيل التطبيق في Azure Active Directory

أولاً ، من الضروري إجراء تسجيل التطبيق باستخدام Azure Active Directory. هناك نوعان من الأذونات التي يمكن استخدامها للوصول إلى علب البريد باستخدام التطبيق الخاص بك. اختر نوعًا معينًا من الأذونات ، اعتمادًا على التطبيق الذي تقوم بإنشائه:

  • التطبيقات التي تستخدم الأذونات المفوضة لديها مستخدم مسجل الدخول موجود. بمعنى آخر ، عند الاتصال بالخدمة ، تظهر نافذة حوار لاسم مستخدم وكلمة مرور. لا يمكن أن يتمتع التطبيق بامتيازات أكثر من مستخدم قام بتسجيل الدخول.
  • يتم تشغيل التطبيقات التي تستخدم أذونات التطبيق بدون وجود مستخدم قام بتسجيل الدخول. على سبيل المثال ، هذه هي التطبيقات التي تعمل كخدمات خلفية أو شياطين. يمكن للمسؤول فقط الموافقة على أذونات التطبيق.

بالإضافة إلى ذلك ، راجع مقالة وثائق Microsoft لمزيد من المعلومات.

يعتمد إجراء التسجيل على نوع الإذن المحدد. لتسجيل تطبيقك ، راجع مقالة وثائق Microsoft.

C# .NET API للوصول إلى خوادم البريد الإلكتروني

لإنشاء عملاء EWS و Imap و Smtp ، سنستخدم Aspose.Email for .NET. إنها مكتبة رائعة لتنفيذ تطبيقات عميل البريد الإلكتروني باستخدام .NET. باستخدام المكتبة ، يمكنك الاتصال بخوادم البريد الإلكتروني والوصول إليها بسهولة. يمكنك تثبيت Aspose.Email لـ .NET عبر NuGet أو تنزيل DLL الخاص به.

PM> Install-Package Aspose.Email

استخدم المصادقة الحديثة مع EwsClient

بعد تسجيل التطبيق يمكننا التركيز على كتابة الكود الذي سيتكون من الأجزاء التالية:

  • أولاً ، احصل على رمز التفويض.
  • ثم استخدم الرمز المميز للمصادقة.

الحصول على رمز التفويض

للحصول على الرمز المميز ، سنستخدم مكتبة مصادقة Microsoft (MSAL) لـ .NET.

فيما يلي خطوات الحصول على رمز التفويض في C#.

  • أضف حزمة Microsoft.Identity.Client nuget التي تحتوي على ثنائيات MSAL.NET.
  • قم بإنشاء فئة AccessParameters لتخزين بيانات الاعتماد.
  • أخيرًا ، قم بإنشاء طريقة تقبل معلمات الوصول واستخدام MSAL.NET للحصول على رمز وصول.

ستعتمد نماذج التعليمات البرمجية التالية على نوع المصادقة المختارة.

الحصول على رمز مع تفويض المصادقة

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

احصل على رمز مميز مع مصادقة التطبيق

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

استخدام الرمز المميز للمصادقة

بعد ذلك ، عندما نحصل على رمز مميز بنجاح ، فلنبدأ في تهيئة EwsClient.

استخدام الرمز المميز بالمصادقة المفوضة

NetworkCredential credentials = new OAuthNetworkCredential(accessToken);

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

استخدام الرمز المميز مع مصادقة التطبيق

// استخدم اسم مستخدم Microsoft365 ورمز الوصول
NetworkCredential credentials = new OAuthNetworkCredential(username, accessToken);

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

استخدم المصادقة الحديثة مع عملاء IMAP أو POP أو SMTP

الوصول عبر IMAP و POP و SMTP عبر أذونات التطبيق غير مدعوم. بمعنى آخر ، دعم المصادقة المفوضة فقط.

تم تحديد إجراء تسجيل التطبيق باستخدام Azure Active Directory أعلاه.

استخدم مركز إدارة Microsoft 365 لتمكين أو تعطيل IMAP و POP و SMTP AUTH في علب بريد محددة

  • افتح مركز إدارة Microsoft 365 وانتقل إلى المستخدمون> المستخدمون النشطون.
  • حدد المستخدم ، وفي القائمة المنبثقة التي تظهر ، انقر فوق البريد.
  • في قسم تطبيقات البريد الإلكتروني ، انقر فوق إدارة تطبيقات البريد الإلكتروني.
  • تحقق من إعداد IMAP ، و POP ، و SMTP المصدق: غير محدد = معطل ، محدد = ممكّن.
  • أخيرًا ، انقر فوق حفظ التغييرات.

إضافة رمز للحصول على رمز المصادقة المميز من خادم الرمز المميز

تأكد من تحديد النطاقات الكاملة ، بما في ذلك عناوين URL لموارد Outlook.

للحصول على الرمز المميز ، سنستخدم مكتبة مصادقة Microsoft (MSAL) لـ .NET.

فيما يلي خطوات الحصول على رمز التفويض في C#.

  • أضف حزمة Microsoft.Identity.Client nuget التي تحتوي على ثنائيات MSAL.NET.
  • قم بإنشاء فئة AccessParameters لتخزين بيانات الاعتماد.
  • أخيرًا ، قم بإنشاء طريقة تقبل معلمات الوصول واستخدام MSAL.NET للحصول على رمز وصول.
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;
}

استخدام الرمز المميز للمصادقة

بعد ذلك ، عندما نحصل على رمز مميز بنجاح ، دعنا نهيئ ImapClient.

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

وبالمثل ، سيبدو التهيئة SmtpClient على النحو التالي.

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

احصل على ترخيص API مجاني

يمكنك استخدام Aspose.Email لـ .NET بدون قيود تقييمية باستخدام ترخيص مؤقت مجاني.

استنتاج

تعلمت في هذه المقالة كيفية استخدام المصادقة الحديثة مع Aspose.Email API للاتصال بصناديق بريد Microsoft365. علاوة على ذلك ، رأيت أنه يمكنك بسهولة إنشاء تطبيقات عميل بريد إلكتروني تلبي متطلبات الأمان المتقدمة. يمكنك معرفة المزيد عن Aspose.Email باستخدام التوثيق. في حال كان لديك أي أسئلة ، يمكنك إرسالها إلى المنتدى.

أنظر أيضا