#authentication #azure-active-directory #blazor #saml-2.0 #blazor-server-side
#аутентификация #azure-active-directory #blazor #saml-2.0 #blazor-на стороне сервера
Вопрос:
Итак, по сути, у меня есть серверное приложение Blazor. Я пытаюсь добавить внешнюю аутентификацию с помощью Azure AD SAML. Я использую Sustainsys.Saml2.AspNetCore2
пакет для внешней аутентификации. Я не так хорошо знаком с различными методами аутентификации в ASP.NET или Blazor.
Я использовал серверный шаблон Blazor для контейнера docker Linux, в котором настроена аутентификация для отдельной учетной записи, и я добавил Azure AD SAML в качестве внешнего.
Вот как мой Configure Services
выглядит внутри Startup.cs
public void ConfigureServices(IServiceCollection services)
{
this.LoadConfigurations();
services.AddDataProtection();
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddElasticsearch(this.Configuration);
services.AddHttpContextAccessor();
services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
services.AddAuthentication()
.AddSaml2("AAD", "Azure AD", options =>
{
options.SPOptions.EntityId = new EntityId("spn:" this.Configuration["AzureAD:EnterpriseAppId"]);
options.SPOptions.ReturnUrl = new Uri(this.Configuration["AzureAD:ReturnUrl"]);
options.IdentityProviders.Add(
new IdentityProvider(
new EntityId(this.Configuration["AzureAD:AzureADId"]), options.SPOptions)
{
LoadMetadata = true,
MetadataLocation = this.Configuration["AzureAD:AppMetadataUrl"]
}
);
});
}
Здесь мы используем базу данных SQLServer и храним идентификаторы пользователей? Приложение использует общую страницу входа:
В моем случае использования все, что я хочу, это аутентифицировать пользователей через Azure AD. Я не хочу, чтобы они создавали и использовали локальные учетные записи, и я не хочу иметь какую-либо локальную базу данных. Я искал везде и не смог найти решение, которое не использует базу данных. Кто-нибудь может помочь мне найти правильное направление?
Комментарии:
1. Проект по умолчанию использует
Identity
в качестве поставщика аутентификации пользовательский интерфейс по умолчанию, в котором есть элемент входа в систему. Вы можете переопределить эти представления и удалить те части, которые вы не хотите показывать.2. Спасибо за ваш ответ. Вы имеете в виду проект на стороне сервера Blazor по умолчанию с аутентификацией отдельных учетных записей? Я не вижу точных представлений внутри него, в частности скриншота, который я опубликовал.
3. Я нашел ответ о переопределении пользовательских интерфейсов, как вы сказали. learn.microsoft.com/en-us/aspnet/core/security/authentication/… Однако я все еще не уверен, как удалить зависимость от базы данных. Насколько я понимаю, идентификатор создается с помощью базы данных, без нее он не создается и во время выполнения.
4. Я просмотрел библиотеку Saml2 и, не вникая в нее глубоко, не могу сразу сказать, требуется ли для этого идентификация или нет. Вы можете попробовать поиграть с ` services. Добавить defaultidentity<Идентификатор пользователя> (параметры => options. Вход в систему. RequireConfirmedAccount = true) . AddEntityFrameworkStores<ApplicationDbContext>();`. В их одном примере они настроили его на использование идентификации через github.com/Sustainsys/Saml2/blob/develop/Samples /…
5. Вы выяснили, как это сделать? Я пытаюсь сделать то же самое, и в Интернете об этом не так много информации.