Я думаю, что у меня есть ответ на этот вопрос, хотя это приводит к новым вопросам.
По сути, наш код использует Identity, а также AzureADB2C.Идентификация конфликтует с процессом входа в AzureADB2C.Вход успешен, и токен возвращается, но по возвращении он каким-то образом стирается Identity.
Это код, который у меня есть в Startup.cs:
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAdB2C(options => Configuration.Bind("Authentication:AzureAdB2C", options))
.AddCookie();
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.Configure<ApiBehaviorOptions>(options =>
{
options.InvalidModelStateResponseFactory = ctx => new ValidationProblemDetailsResult();
});
services.AddOptions();
ConfigureMvc(services);
// Add Identity services to the services container.
services.SetupIdentity();
SetupIdentity isметод расширения, который содержит следующее:
services.AddIdentity<ApplicationUser, ApplicationRole>(o => {
o.Password.RequiredLength = 8;
o.Password.RequireDigit = true;
o.Password.RequireLowercase = true;
o.Password.RequireUppercase = true;
o.Password.RequireNonAlphanumeric = true;
})
.AddEntityFrameworkStores<ApplicationContext>()
.AddDefaultTokenProviders()
.AddUserStore<UserStore<ApplicationUser, ApplicationRole, ApplicationContext, Guid>>()
.AddRoleStore<RoleStore<ApplicationRole, ApplicationContext, Guid>>();
Идея состоит в том, что AAD будет использоваться для аутентификации, а локальные роли идентификации будут использоваться для предоставления пользователю различных разрешений в приложении.Исходя из этой проблемы, похоже, что нам придется переосмыслить нашу безопасность.
Вопрос в том, могут ли AAD и Identity действительно не использоваться вместе?Я хотел бы сценарий, где идентификатор пользователя из AAD возвращается, хранится в локальном SQL, а затем этот идентификатор пользователя используется в локальной базе данных для подключения пользователя к переменным объектам.Если AAD и Identity не могут использоваться вместе, какова альтернатива?Т.е. каков наилучший способ подключения пользователя AAD к локальной базе данных?Может кто-нибудь указать мне некоторые статьи MS, которые обсуждают это?