Authentication مدرن اکنون به‌طور پیش‌فرض برای همه مستاجران جدید Microsoft 365/Azure فعال است، زیرا این پروتکل از احراز هویت اولیه منسوخ امن‌تر است. احراز هویت مدرن بر اساس Active Directory Authentication Library و OAuth 2.0 است. از توکن‌های با زمان محدود استفاده می‌کند و برنامه‌ها اعتبار کاربری را ذخیره نمی‌کنند. علاوه بر این، برنامه ریزی شده است که به طور کامل استفاده از احراز هویت اولیه برای همه مشتریان Microsoft 365 ممنوع شود. در این مقاله، ما بر روی استفاده از احراز هویت مدرن برای اتصال از طریق مشتریان EWS، SMTP، IMAP، POP Aspose.Email برای دات نت تمرکز خواهیم کرد.

تنظیمات پیش نیاز

برای استفاده از احراز هویت مدرن، مطمئن شوید که فعال باشد. با این حال، برای مستاجران ایجاد شده قبل از 1 اوت 2017، احراز هویت مدرن به طور پیش فرض خاموش است. در مرکز مدیریت Microsoft 365، به تنظیمات > تنظیمات سازمان > تأیید هویت مدرن بروید. در قسمت Modern authentication Flyout که ظاهر می شود، می توانید پروتکل هایی را که دیگر نیازی به احراز هویت اولیه ندارند شناسایی کنید. برای مستاجران جدید 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 > Properties > Manage Security defaults > Enable Security Defaults > «No» بروید. برای اطلاعات بیشتر، به مقاله مستندات مایکروسافت مراجعه کنید.

ثبت برنامه با Azure Active Directory

در مرحله اول، لازم است ثبت برنامه با Azure Active Directory انجام شود. دو نوع مجوز وجود دارد که می توان از آنها برای دسترسی به صندوق های پستی با برنامه خود استفاده کرد. بسته به برنامه ای که ایجاد می کنید، نوع خاصی از مجوز را انتخاب کنید:

  • برنامه‌هایی که از مجوزهای تفویض‌شده استفاده می‌کنند، کاربر واردشده به سیستم دارند. به عبارت دیگر، هنگام اتصال به سرویس، یک پنجره محاوره ای برای نام کاربری و رمز عبور ظاهر می شود. برنامه هرگز نمی تواند امتیازات بیشتری نسبت به یک کاربر وارد شده داشته باشد.
  • برنامه هایی که از مجوزهای برنامه استفاده می کنند بدون حضور کاربر وارد شده اجرا می شوند. به عنوان مثال، اینها برنامه هایی هستند که به عنوان سرویس های پس زمینه یا شیطان اجرا می شوند. فقط یک مدیر می تواند با مجوزهای برنامه موافقت کند.

علاوه بر این، برای اطلاعات بیشتر به مقاله مستندات مایکروسافت مراجعه کنید.

مراحل ثبت نام به نوع مجوز انتخاب شده بستگی دارد. برای ثبت برنامه خود، به مقاله مستندات مایکروسافت مراجعه کنید.

C#.NET API برای دسترسی به سرورهای ایمیل

برای ایجاد کلاینت های EWS، Imap و Smtp، از Aspose.Email for .NET استفاده می کنیم. این یک کتابخانه شگفت انگیز برای پیاده سازی برنامه های سرویس گیرنده ایمیل با استفاده از دات نت است. با استفاده از کتابخانه، می توانید به راحتی به سرورهای ایمیل متصل شوید و به آنها دسترسی داشته باشید. می توانید Aspose.Email را برای دات نت از طریق NuGet یا دانلود DLL آن نصب کنید.

PM> Install-Package Aspose.Email

از احراز هویت مدرن با EwsClient استفاده کنید

پس از ثبت برنامه، می توانیم روی نوشتن کد تمرکز کنیم که شامل قسمت های زیر می شود:

  • ابتدا رمز مجوز را دریافت کنید.
  • سپس، از توکن برای احراز هویت استفاده کنید.

دریافت نشانه مجوز

برای دریافت رمز، از Microsoft Authentication Library (MSAL) برای دات نت استفاده می کنیم.

مراحل زیر برای دریافت توکن مجوز در سی شارپ آمده است.

  • Microsoft.Identity.Client nuget package را که حاوی باینری های 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 Admin Center را باز کنید و به Users > Active users بروید.
  • کاربر را انتخاب کنید و در قسمتی که ظاهر می شود، روی Mail کلیک کنید.
  • در بخش برنامه‌های ایمیل، روی مدیریت برنامه‌های ایمیل کلیک کنید.
  • تنظیم IMAP، POP، SMTP تأیید شده را تأیید کنید: علامت نخورده = غیرفعال، علامت زده شده = فعال است.
  • در نهایت روی ذخیره تغییرات کلیک کنید.

افزودن کد برای دریافت رمز احراز هویت از سرور توکن

مطمئن شوید که دامنه کامل، از جمله URL های منبع Outlook را مشخص کرده اید.

برای دریافت رمز، از Microsoft Authentication Library (MSAL) برای دات نت استفاده می کنیم.

مراحل زیر برای دریافت توکن مجوز در سی شارپ آمده است.

  • Microsoft.Identity.Client nuget package را که حاوی باینری های 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 برای دات نت بدون محدودیت ارزیابی با استفاده از مجوز موقت رایگان استفاده کنید.

نتیجه

در این مقاله نحوه استفاده از احراز هویت مدرن با Aspose.Email API برای اتصال به صندوق پستی Microsoft365 را یاد گرفتید. علاوه بر این، دیده‌اید که می‌توانید به راحتی برنامه‌های سرویس گیرنده ایمیل ایجاد کنید که الزامات امنیتی پیشرفته را برآورده کنند. می‌توانید با استفاده از مستندات درباره Aspose.Email اطلاعات بیشتری کسب کنید. در صورت داشتن هر گونه سوال، می توانید به [تالار گفتمان21 ما ارسال کنید.

همچنین ببینید