AddMicrosoftIdentityWebApp против AddAzureADBearer

#c# #.net #asp.net-core #.net-core

#c# #.net #asp.net-ядро #.net-ядро

Вопрос:

Документация быстрого запуска недавно изменилась, и я не вижу, что это изменило:

В чем разница между:

 services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(options =>
        {
            options.Instance = azureSecurity.Instance;
            options.Domain = azureSecurity.Domain;
            options.TenantId = azureSecurity.TenantId;
            options.ClientId = azureSecurity.ClientId;
        });
 

И:

 services.AddAuthentication(AzureADDefaults.JwtBearerAuthenticationScheme)
        .AddAzureADBearer(options =>
        {
            options.Instance = azureSecurity.Instance;
            options.Domain = azureSecurity.Domain;
            options.TenantId = azureSecurity.TenantId;
            options.ClientId = azureSecurity.ClientId;
        });
 

Ответ №1:

Microsoft переносит проверку подлинности Azure Active Directory для приложений с ADAL на MSAL.

Новая библиотека аутентификации Microsoft (MSAL) поддерживает методы аутентификации не только с помощью AAD, но и других поставщиков токенов, таких как Facebook, Google и LinkedIn.

введите описание изображения здесь

Подробности можно увидеть здесь.

Таким образом, разница между этими двумя сегментами кода заключается всего лишь в переходе с устаревшего API на новый. Поскольку образец все еще использует AAD в качестве поставщика токенов аутентификации, я бы сказал, что между ними не так много функциональных различий.

При переходе с ADAL на MSAL следует упомянуть одну вещь: не забудьте добавить /v2.0 к URL-адресу вашего эмитента. например https://login.microsoftonline.com/common/v2.0 . Я потратил несколько дней, чтобы понять это, пытаясь настроить проверку подлинности запроса в службе приложений Azure.

(Вы можете видеть, что старые методы расширения AAD Auth отмечены устаревшим атрибутом в исходном коде .Net Core)

 [Obsolete("This is obsolete and will be removed in a future version. Use Microsoft.Identity.Web instead. See https://aka.ms/ms-identity-web.")]
public static class AzureADAuthenticationBuilderExtensions
{
    /// <summary>
    /// Adds JWT Bearer authentication to your app for Azure Active Directory Applications.
    /// </summary>
    /// <param name="builder">The <see cref="AuthenticationBuilder"/>.</param>
    /// <param name="configureOptions">The <see cref="Action{AzureADOptions}"/> to configure the
    /// <see cref="AzureADOptions"/>.
    /// </param>
    /// <returns>The <see cref="AuthenticationBuilder"/>.</returns>
    [Obsolete("This is obsolete and will be removed in a future version. Use AddMicrosoftWebApiAuthentication from Microsoft.Identity.Web instead. See https://aka.ms/ms-identity-web.")]
    public static AuthenticationBuilder AddAzureADBearer(this AuthenticationBuilder builder, Action<AzureADOptions> configureOptions) =>
        builder.AddAzureADBearer(
            AzureADDefaults.BearerAuthenticationScheme,
            AzureADDefaults.JwtBearerAuthenticationScheme,
            configureOptions);
    
    ...