이 프로토콜이 더 이상 사용되지 않는 기본 인증보다 더 안전하기 때문에 최신 인증은 이제 모든 새 Microsoft 365/Azure 테넌트에 대해 기본적으로 활성화됩니다. 최신 인증은 Active Directory 인증 라이브러리 및 OAuth 2.0을 기반으로 합니다. 시간 제한 토큰을 사용하며 애플리케이션은 사용자 자격 증명을 저장하지 않습니다. 또한 모든 Microsoft 365 클라이언트에 대해 기본 인증 사용을 전면 금지할 예정입니다. 이 기사에서는 최신 인증을 사용하여 .NET용 Aspose.Email의 EWS, SMTP, IMAP, POP 클라이언트를 통해 연결하는 데 중점을 둘 것입니다.

필수 설정

최신 인증을 사용하려면 활성화되어 있는지 확인하십시오. 그러나 2017년 8월 1일 이전에 생성된 테넌트의 경우 최신 인증이 기본적으로 해제되어 있습니다. Microsoft 365 관리 센터에서 설정 > 조직 설정 > 최신 인증으로 이동합니다. 표시되는 최신 인증 플라이아웃에서 더 이상 기본 인증이 필요하지 않은 프로토콜을 식별할 수 있습니다. Azure의 새 Microsoft365 테넌트의 경우 기본 인증은 모든 애플리케이션에 대해 기본적으로 비활성화되어 있습니다. 따라서 이 섹션에 텍스트가 표시됩니다.

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을 사용하여 이메일 클라이언트 앱을 구현하는 놀라운 라이브러리입니다. 라이브러리를 사용하면 이메일 서버에 쉽게 연결하고 액세스할 수 있습니다. NuGet 또는 다운로드 해당 DLL을 통해 .NET용 Aspose.Email을 설치할 수 있습니다.

PM> Install-Package Aspose.Email

EwsClient로 최신 인증 사용

응용 프로그램을 등록한 후에는 다음 부분으로 구성되는 코드 작성에 집중할 수 있습니다.

  • 먼저 인증 토큰을 가져옵니다.
  • 그런 다음 토큰을 사용하여 인증합니다.

인증 토큰 가져오기

토큰을 가져오기 위해 .NET용 Microsoft 인증 라이브러리(MSAL)를 사용합니다.

다음은 C#에서 인증 토큰을 얻는 단계입니다.

  • MSAL.NET의 바이너리가 포함된 Microsoft.Identity.Client nuget 패키지를 추가합니다.
  • 자격 증명을 저장할 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 리소스 URL을 포함하여 전체 범위를 지정해야 합니다.

토큰을 얻으려면 .NET용 Microsoft 인증 라이브러리(MSAL)를 사용합니다.

다음은 C#에서 인증 토큰을 얻는 단계입니다.

  • MSAL.NET의 바이너리가 포함된 Microsoft.Identity.Client nuget 패키지를 추가합니다.
  • 자격 증명을 저장할 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 for .NET을 사용할 수 있습니다.

결론

이 문서에서는 Aspose.Email API로 최신 인증을 사용하여 Microsoft365 사서함에 연결하는 방법을 배웠습니다. 또한 고급 보안 요구 사항을 충족하는 전자 메일 클라이언트 응용 프로그램을 쉽게 만들 수 있습니다. 문서를 사용하여 Aspose.Email에 대해 자세히 알아볼 수 있습니다. 질문이 있는 경우 포럼에 게시할 수 있습니다.

또한보십시오