Аутентификация cookie Oauth с использованием междоменного домена в ASP.NET Core API - PullRequest
10 голосов
/ 08 октября 2019

Я использовал аутентификацию 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

...