Как объединить удостоверение Asp.Net с авторизацией Azure AD

117
19

Как интегрировать 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 Identity. Любая помощь высоко ценится

спросил(а) 2021-01-19T15:57:53+03:00 2 месяца, 3 недели назад
1
Решение
129

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

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

Заполните базу данных Migrations Add-Migration Name, Update-Database.

Добавьте своего провайдера 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 создаст локальную учетную запись, которая связывает вашу внешнюю учетную запись, чтобы вы могли выполнять авторизацию с вашей локальной системой идентификации.

ответил(а) 2021-01-19T15:57:53+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема