【发布时间】:2020-02-05 20:31:47
【问题描述】:
我在 ASP.NET Core API 项目中使用了 OAuth cookie 身份验证。本项目所有 API 均已授权。成功登录后,可从浏览器 URL 栏访问所有 API。当我尝试从其他域访问 AJAX 请求中的 API 时,总是会返回 Unauthorized。
这里如何从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
【问题讨论】:
标签: api authentication cookies .net-core cross-domain