Я использовал аутентификацию cookie OAuth в проекте ASP.NET Core API. Все API авторизованы в этом проекте. После успешного входа в систему все API могут быть доступны из панели URL браузера. Когда я пытаюсь получить доступ к API в запросе Ajax из другого домена, всегда возвращается «Несанкционированный».
Вот как определить, аутентифицирован ли пользователь по запросу Ajax или нет?
API domain = ".apidomain.com"
Client domain = ".clientdomain.com"
Конфигурации API:
services.AddAuthentication("oAuthSecurityScheme")
.AddOAuth("login.microsoftonline.com",
options =>
{
....
....
}).AddCookie(
"oAuthSecurityScheme",
options =>
{
options.LogoutPath = new PathString("/logout");
options.LoginPath = new PathString("/api/v1/account/authorize");
options.ExpireTimeSpan = new TimeSpan(7, 0, 0, 0);
options.SlidingExpiration = true;
options.Cookie.Name = "CustomerOAuthCookie";
options.Events.OnRedirectToLogin = UnAuthorizedResponseAsync;
options.Cookie.SameSite = SameSiteMode.None;
options.Cookie.HttpOnly = false;
});
Клиентское приложение:
$.ajax({
url: "https://localhost:44332/api/gettickets/1",
type: 'GET',
success: function (result)
{
alert(result);
console.log(result);
}
});
Примечание: При непосредственном доступе к указанному ниже API в браузере возвращается правильный ответ https://localhost:44332/api/gettickets/1