Я пытаюсь аутентифицировать исходные запросы CORS и установить принцип утверждений с пользователем единой учетной записи внутренней компании.Пока у меня есть текущие настройки, cookie никогда не будет создан на домене, установленном при настройке аутентификации.
У меня есть клиентское приложение Angular и .Net Core 3.0 Webapi, требование к клиенту должно бытьвозможность установить аутентификацию для будущих вызовов API.
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
options.Cookie.Name = "access_token";
options.Cookie.SameSite = SameSiteMode.None;
options.Cookie.Domain = "localhost:xxxx";
});
//CORS
services.AddCors(options =>
{
options.AddPolicy(
"AllowOrigin",
builder => builder.WithOrigins("localhost:xxxx")
.AllowCredentials()
.AllowAnyHeader()
.AllowAnyMethod());
});
//Sign In
HttpContext.SignInAsync(
scheme: CookieAuthenticationDefaults.AuthenticationScheme,
principal: new ClaimsPrincipal(new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme)),
properties: new AuthenticationProperties { ExpiresUtc = DateTime.Now.Add(120) });
Я тестирую все это на локальном, поэтому оба URL-адреса являются локальными с разными портами. Angular размещен: http://localhost:xxxx
размещен WebAPi: http://localhost:xxx2
http-запрос от Angular к webapi - http://localhost:xxx2/api/auth
, в котором есть вызов SignInAsync, единый знак компании делает имя пользователя, но cookie не создается.Если я удаляю options.Cookie.Domain = "localhost:xxxx";
, то cookie создается в домене webapi http://localhost:xxx2
.Должно быть, я что-то здесь упускаю.