L’authentification moderne est désormais activée par défaut pour tous les nouveaux locataires Microsoft 365/Azure, car ce protocole est plus sécurisé que l’authentification de base obsolète. L’authentification moderne est basée sur la bibliothèque d’authentification Active Directory et OAuth 2.0. Il utilise des jetons limités dans le temps et les applications ne stockent pas les informations d’identification des utilisateurs. De plus, il est prévu d’interdire complètement l’utilisation de l’authentification de base pour tous les clients Microsoft 365. Dans cet article, nous nous concentrerons sur l’utilisation de l’authentification moderne pour se connecter via les clients EWS, SMTP, IMAP, POP d’Aspose.Email for .NET.

Paramètres prérequis

Pour utiliser l’authentification moderne, assurez-vous qu’elle est activée. Cependant, pour les locataires créés avant le 1er août 2017, l’authentification moderne est désactivée par défaut. Dans le Centre d’administration Microsoft 365, accédez à Paramètres > Paramètres de l’organisation > Authentification moderne. Dans le menu déroulant Authentification moderne qui s’affiche, vous pouvez identifier les protocoles qui ne nécessitent plus l’authentification de base. Pour les nouveaux locataires Microsoft365 dans Azure, l’authentification de base est désactivée par défaut pour toutes les applications. Par conséquent, le texte sera affiché dans cette section.

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.

Vous pouvez activer la prise en charge de l’authentification de base pour le locataire à partir du portail Azure, accédez à Azure Active Directory > Propriétés > Gérer les paramètres de sécurité par défaut > Activer les paramètres de sécurité par défaut > « Non ». Pour plus d’informations, consultez l’article de la documentation Microsoft.

Enregistrement de l’application avec Azure Active Directory

Tout d’abord, il est nécessaire d’effectuer l’enregistrement de l’application avec Azure Active Directory. Il existe deux types d’autorisations qui peuvent être utilisées pour accéder aux boîtes aux lettres avec votre application. Choisissez un type d’autorisation spécifique, en fonction de l’application que vous créez :

  • Les applications qui utilisent des autorisations déléguées ont un utilisateur connecté présent. En d’autres termes, lorsque vous vous connectez au service, une fenêtre de dialogue apparaît pour un nom d’utilisateur et un mot de passe. L’application ne peut jamais avoir plus de privilèges qu’un utilisateur connecté.
  • Les applications qui utilisent les autorisations d’application s’exécutent sans qu’un utilisateur connecté ne soit présent. Par exemple, ce sont des applications qui s’exécutent en tant que services d’arrière-plan ou démons. Seul un administrateur peut consentir aux autorisations d’application.

En outre, reportez-vous à l’article de la documentation Microsoft pour plus d’informations.

La procédure d’enregistrement dépend du type d’autorisation sélectionné. Pour enregistrer votre application, reportez-vous à l’article de la documentation Microsoft.

API C# .NET pour accéder aux serveurs de messagerie

Pour créer les clients EWS, Imap et Smtp, nous utiliserons Aspose.Email for .NET. C’est une bibliothèque incroyable pour implémenter des applications de client de messagerie à l’aide de .NET. À l’aide de la bibliothèque, vous pouvez facilement vous connecter et accéder aux serveurs de messagerie. Vous pouvez installer Aspose.Email for .NET via NuGet ou télécharger sa DLL.

PM> Install-Package Aspose.Email

Utiliser l’authentification moderne avec EwsClient

Après avoir enregistré l’application, nous pouvons nous concentrer sur l’écriture du code, qui sera composé des parties suivantes :

  • Tout d’abord, obtenez le jeton d’autorisation.
  • Ensuite, utilisez le jeton pour vous authentifier.

Obtenir le jeton d’autorisation

Pour obtenir le jeton, nous utiliserons Microsoft Authentication Library (MSAL) for .NET.

Voici les étapes pour obtenir un jeton d’autorisation en C#.

  • Ajoutez le package nuget Microsoft.Identity.Client qui contient les fichiers binaires de MSAL.NET.
  • Créez une classe AccessParameters pour stocker les informations d’identification.
  • Enfin, créez une méthode acceptant les paramètres d’accès et utilisant MSAL.NET pour obtenir un jeton d’accès.

Les exemples de code suivants dépendent du type d’authentification choisi.

Obtenir un jeton avec authentification déléguée

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

Obtenez un jeton avec l’authentification de l’application

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

Utiliser le jeton pour s’authentifier

Après cela, lorsque nous avons réussi à obtenir un jeton, initialisons le EwsClient.

Utilisation du jeton avec authentification déléguée

NetworkCredential credentials = new OAuthNetworkCredential(accessToken);

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

Utiliser le jeton avec l’authentification de l’application

// Utiliser le nom d'utilisateur et le jeton d'accès Microsoft365
NetworkCredential credentials = new OAuthNetworkCredential(username, accessToken);

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

Utiliser l’authentification moderne avec les clients IMAP, POP ou SMTP

L’accès IMAP, POP, SMTP via les autorisations d’application n’est pas pris en charge. En d’autres termes, l’authentification déléguée est uniquement prise en charge.

La procédure d’enregistrement de l’application auprès d’Azure Active Directory est définie ci-dessus.

Utilisez le centre d’administration Microsoft 365 pour activer ou désactiver IMAP, POP, SMTP AUTH sur des boîtes aux lettres spécifiques

  • Ouvrez le Centre d’administration Microsoft 365 et accédez à Utilisateurs > Utilisateurs actifs.
  • Sélectionnez l’utilisateur et, dans le menu déroulant qui s’affiche, cliquez sur Courrier.
  • Dans la section Applications de messagerie, cliquez sur Gérer les applications de messagerie.
  • Vérifiez le paramètre IMAP, POP, SMTP authentifié : décoché = désactivé, coché = activé.
  • Enfin, cliquez sur Enregistrer les modifications.

Ajout de code pour obtenir un jeton d’authentification à partir d’un serveur de jetons

Assurez-vous de spécifier les étendues complètes, y compris les URL des ressources Outlook.

Pour obtenir le jeton, nous utiliserons Microsoft Authentication Library (MSAL) for .NET.

Voici les étapes pour obtenir un jeton d’autorisation en C#.

  • Ajoutez le package nuget Microsoft.Identity.Client qui contient les fichiers binaires de MSAL.NET.
  • Créez une classe AccessParameters pour stocker les informations d’identification.
  • Enfin, créez une méthode acceptant les paramètres d’accès et utilisant MSAL.NET pour obtenir un jeton d’accès.
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;
}

Utiliser le jeton pour s’authentifier

Après cela, lorsque nous avons réussi à obtenir un jeton, initialisons le ImapClient.

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

De même, l’initialisation SmtpClient se présentera comme suit.

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

Obtenez une licence API gratuite

Vous pouvez utiliser Aspose.Email for .NET sans limitations d’évaluation à l’aide d’une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à utiliser l’authentification moderne avec l’API Aspose.Email pour vous connecter aux boîtes aux lettres Microsoft365. De plus, vous avez vu que vous pouvez facilement créer des applications client de messagerie qui répondent aux exigences de sécurité avancées. Vous pouvez en savoir plus sur Aspose.Email en utilisant la documentation. Au cas où vous auriez des questions, vous pouvez poster sur notre forum.

Voir également