אימות מודרני מופעל כעת כברירת מחדל עבור כל הדיירים החדשים של Microsoft 365/Azure מכיוון שפרוטוקול זה מאובטח יותר מהאימות הבסיסי שהוצא משימוש. אימות מודרני מבוסס על Active Directory Authentication Library ו-OAuth 2.0. הוא משתמש באסימונים מוגבלים בזמן, ויישומים אינם מאחסנים אישורי משתמש. בנוסף, מתוכנן לאסור לחלוטין את השימוש באימות בסיסי עבור כל לקוחות Microsoft 365. במאמר זה, נתמקד בשימוש באימות מודרני לחיבור באמצעות לקוחות EWS, SMTP, IMAP, POP של Aspose.Email for .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.

אתה יכול להפעיל תמיכה בסיסית ב-Auth לדייר מהפורטל Azure, עבור אל Azure Active Directory > מאפיינים > ניהול ברירות מחדל של אבטחה > הפעל ברירות מחדל של אבטחה > לא. למידע נוסף, ראה מאמר תיעוד של מיקרוסופט.

רישום אפליקציה עם 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

לאחר רישום האפליקציה, נוכל להתמקד בכתיבת הקוד, שיורכב מהחלקים הבאים:

  • ראשית, קבל את אסימון ההרשאה.
  • לאחר מכן, השתמש באסימון כדי לאמת.

קבלת אסימון ההרשאה

כדי לקבל את האסימון נשתמש בספריית אימות מיקרוסופט (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 מאומת: לא מסומן = מושבת, מסומן = מופעל.
  • לבסוף, לחץ על שמור שינויים.

הוספת קוד כדי לקבל אסימון אימות משרת אסימון

הקפד לציין את ההיקפים המלאים, כולל כתובות אתרים של משאבי Outlook.

כדי לקבל את האסימון נשתמש בספריית אימות מיקרוסופט (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 באמצעות תיעוד. למקרה שיש לך שאלות כלשהן, אתה יכול לכתוב בפורום שלנו.

ראה גם