Как объединить удостоверение Asp.Net с авторизацией Azure AD - PullRequest
1 голос
/ 09 апреля 2019

Как интегрировать Asp.Net Identity с авторизацией Azure AD

Можно ли интегрировать Asp.Net Identity с Azure AD Authorization с помощью OpenIdConnect?Я хотел бы иметь обоих поставщиков авторизации для локальной авторизации (с помощью стандартной идентификации ядра Asp.net и второй с помощью Azure AD

        _services
            .AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
                options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            })
            .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
            {
                options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.ClientId = clientId;
                options.ClientSecret = clientSecret;
                options.Authority = $"{baseAuthorityUrl}/{tenantId}/v2.0";
                options.CallbackPath = new PathString(callBackPath);
                options.Scope.Add("email");
                options.Scope.Add("profile");
                options.ResponseType = "code id_token";

                options.SaveTokens = true;
                options.GetClaimsFromUserInfoEndpoint = true;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    NameClaimType = "name"
                };
            })

. Это работает для авторизации Azure AD, но я могуизменить способ авторизации с Azure AD на удостоверение ASp.Net. Любая помощь очень ценится

1 Ответ

0 голосов
/ 10 апреля 2019

Я бы предложил использовать шаблон удостоверения ASP.NET по умолчанию для запуска проекта:

  1. Создать новое приложение с удостоверением ASP.NET (шаблон индивидуальных учетных записей пользователей).

  2. Заполните базу данных миграциями Add-Migration Name, Update-Database.

  3. Добавьте поставщика OIDC:

    services
    .AddAuthentication(options =>
    {
        options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    
    }).AddCookie()
    .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
    {
    
        options.SignInScheme = IdentityConstants.ExternalScheme;
    
        options.ClientId = ClientId;
        options.ClientSecret = ClientSecret;
        options.Authority = $"{baseAuthorityUrl}/{tenantId}/v2.0";
        options.CallbackPath = new PathString("/signin-oidc");
        options.Scope.Add("email");
        options.Scope.Add("profile");
        options.ResponseType = "code id_token";
    
        options.SaveTokens = true;
        options.GetClaimsFromUserInfoEndpoint = true;
    
        options.TokenValidationParameters = new TokenValidationParameters
        {
            NameClaimType = "name"
        };
    
    });
    

Убедитесь, что вы используете IdentityConstants.ExternalScheme для SignInScheme, в противном случае Identity не будет корректно принимать внешнюю информацию для входа.

Asp.net создаст локальную учетную запись, которая связывает вашу внешнюю учетную запись, чтобы вы могли выполнять авторизацию в локальной системе идентификации.

...