Autenticación moderna ahora está habilitado de forma predeterminada para todos los inquilinos nuevos de Microsoft 365/Azure porque este protocolo es más seguro que la autenticación básica en desuso. La autenticación moderna se basa en la biblioteca de autenticación de Active Directory y OAuth 2.0. Utiliza tokens de tiempo limitado y las aplicaciones no almacenan las credenciales de los usuarios. Además, está previsto prohibir por completo el uso de la autenticación básica para todos los clientes de Microsoft 365. En este artículo, nos centraremos en el uso de la autenticación moderna para conectarse a través de clientes EWS, SMTP, IMAP y POP de Aspose.Email for .NET.

Configuración de requisitos previos

Para usar la autenticación moderna, asegúrese de que esté habilitada. Sin embargo, para los inquilinos creados antes del 1 de agosto de 2017, la autenticación moderna está desactivada de forma predeterminada. En el Centro de administración de Microsoft 365, vaya a Configuración > Configuración de la organización > Autenticación moderna. En el menú desplegable Autenticación moderna que aparece, puede identificar los protocolos que ya no requieren autenticación básica. Para los nuevos inquilinos de Microsoft 365 en Azure, la autenticación básica está deshabilitada de forma predeterminada para todas las aplicaciones. Por lo tanto, el texto se mostrará en esta sección.

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.

Puede habilitar la compatibilidad con autenticación básica para inquilinos desde el portal Azure, vaya a Azure Active Directory > Propiedades > Administrar valores predeterminados de seguridad > Habilitar valores predeterminados de seguridad > No. Para obtener más información, consulte el Artículo de documentación de Microsoft.

Registro de aplicaciones con Azure Active Directory

En primer lugar, es necesario realizar el registro de la aplicación con Azure Active Directory. Hay dos tipos de permisos que se pueden usar para acceder a los buzones de correo con su aplicación. Elija un tipo específico de permiso, según la aplicación que esté creando:

  • Las aplicaciones que usan permisos delegados tienen presente un usuario que ha iniciado sesión. En otras palabras, cuando se conecta al servicio, aparece una ventana de diálogo para un nombre de usuario y una contraseña. La aplicación nunca puede tener más privilegios que un usuario que inició sesión.
  • Las aplicaciones que usan permisos de aplicación se ejecutan sin la presencia de un usuario que haya iniciado sesión. Por ejemplo, estas son aplicaciones que se ejecutan como servicios en segundo plano o demonios. Solo un administrador puede dar su consentimiento a los permisos de la aplicación.

Además, consulte el Artículo de documentación de Microsoft para obtener más información.

El procedimiento de registro depende del tipo de permiso seleccionado. Para registrar su aplicación, consulte el Artículo de documentación de Microsoft.

C# .NET API para acceder a servidores de correo electrónico

Para crear los clientes EWS, Imap y Smtp, utilizaremos Aspose.Email for .NET. Es una biblioteca increíble para implementar aplicaciones de clientes de correo electrónico usando .NET. Usando la biblioteca, puede conectarse y acceder fácilmente a los servidores de correo electrónico. Puede instalar Aspose.Email for .NET a través de NuGet o descargar su DLL.

PM> Install-Package Aspose.Email

Utilice la autenticación moderna con EwsClient

Después de registrar la aplicación, podemos centrarnos en escribir el código, que constará de las siguientes partes:

  • En primer lugar, obtenga el token de autorización.
  • Luego, use el token para autenticarse.

Obtener el token de autorización

Para obtener el token, usaremos Biblioteca de autenticación de Microsoft (MSAL) para .NET.

Los siguientes son los pasos para obtener el token de autorización en C#.

  • Agregue el paquete nuget Microsoft.Identity.Client que contiene los archivos binarios de MSAL.NET.
  • Cree una clase AccessParameters para almacenar credenciales.
  • Finalmente, cree un método que acepte parámetros de acceso y use MSAL.NET para obtener un token de acceso.

Los siguientes ejemplos de código dependerán del tipo de autenticación elegido.

Obtenga un token con autenticación delegada

Obtenga un token con la autenticación de la aplicación

Usando el token para autenticar

Después de eso, cuando hayamos obtenido con éxito un token, inicialicemos el EwsClient.

Uso del token con autenticación delegada

Usar el token con la autenticación de la aplicación

Utilice la autenticación moderna con clientes IMAP, POP o SMTP

No se admite el acceso IMAP, POP, SMTP a través de los permisos de la aplicación. En otras palabras, solo se admite la autenticación delegada. El procedimiento de registro de la aplicación con Azure Active Directory se define arriba.

Use el Centro de administración de Microsoft 365 para habilitar o deshabilitar IMAP, POP, SMTP AUTH en buzones de correo específicos

  • Abra el Centro de administración de Microsoft 365 y vaya a Usuarios > Usuarios activos.
  • Seleccione el usuario y, en el menú desplegable que aparece, haga clic en Correo.
  • En la sección Aplicaciones de correo electrónico, haga clic en Administrar aplicaciones de correo electrónico.
  • Verifique la configuración de IMAP, POP, SMTP autenticado: sin marcar = deshabilitado, marcado = habilitado.
  • Finalmente, haga clic en Guardar cambios.

Agregar código para obtener un token de autenticación de un servidor de tokens

Asegúrese de especificar los ámbitos completos, incluidas las URL de recursos de Outlook.

Para obtener el token, usaremos Biblioteca de autenticación de Microsoft (MSAL) para .NET.

Los siguientes son los pasos para obtener el token de autorización en C#.

  • Agregue el paquete nuget Microsoft.Identity.Client que contiene los archivos binarios de MSAL.NET.
  • Cree una clase AccessParameters para almacenar credenciales.
  • Finalmente, cree un método que acepte parámetros de acceso y use MSAL.NET para obtener un token de acceso.
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;
}

Usando el token para autenticar

Después de eso, cuando hayamos obtenido con éxito un token, inicialicemos el ImapClient.

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

De manera similar, la inicialización de SmtpClient tendrá el siguiente aspecto.

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

Obtenga una licencia de API gratuita

Puede usar Aspose.Email for .NET sin limitaciones de evaluación usando una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a usar la autenticación moderna con Aspose.Email API para conectarse a los buzones de correo de Microsoft365. Además, ha visto que puede crear fácilmente aplicaciones de cliente de correo electrónico que cumplan con requisitos de seguridad avanzados. Puede obtener más información sobre Aspose.Email utilizando la documentación. En caso de que tenga alguna pregunta, puede publicarla en nuestro foro.

Ver también