gpt4 book ai didi

oauth-2.0 - Asp.net Core、JWT 和 CORS header

转载 作者:行者123 更新时间:2023-12-03 22:42:06 26 4
gpt4 key购买 nike

当我在同一服务上同时启用 JWT 承载身份验证和 CORS 时,我在从服务器获取适当的 Access-Control-Allow-Origin header 时遇到问题。
当我从配置中删除 UseJwtBearerAuthentication 时,一切正常。

public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAllOrigins", builder =>
{
builder.AllowAnyOrigin();
builder.AllowAnyHeader();
builder.AllowAnyMethod();
builder.AllowCredentials();
});
});

services.AddMvc();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

app.UseJwtBearerAuthentication(options =>
{
options.AutomaticAuthenticate = true;
options.RequireHttpsMetadata = false;
options.Audience = "c2cf422a-a432-2038-b183-cda64e16239e";
options.Authority = "domain.com";
});

app.UseCors("AllowAllOrigins");

app.UseIISPlatformHandler();

app.UseMvc();
}

我试图更改配置的顺序,但似乎没有任何效果。我还尝试将 [EnableCors("AllowAllOrigins")] 添加到我正在调用的 Controller 中。

我已经根据评论中的建议更改了配置顺序,并确定了导致问​​题的属性:
app.UseIISPlatformHandler();

app.UseCors("AllowAllOrigins");

app.UseJwtBearerAuthentication(options =>
{
options.AutomaticAuthenticate = true;
options.RequireHttpsMetadata = false;
options.Audience = "c8cf662a-ac73-4050-b285-cda90e22992e";
options.Authority = "iwdwk.com";
});

app.UseMvc();

在上面的代码中,下面的行似乎导致了问题:
options.AutomaticAuthenticate = true;

不幸的是,我需要启用它,以便我可以通过 JWT token 进行授权......除非有另一种方法可以做到这一点?

最佳答案

我猜,来自浏览器的 OPTIONS 调用被身份验证拒绝,因为它们可能不包含不记名 token 。我不确定,但在调用 UseJwtBearerAuthentication 时,必须有一种方法可以跳过 OPTIONS 调用的身份验证。如果您想在此之前确认这一点,请尝试从 postman 那里调用您的端点,因为它会跳过 OPTIONS 调用并查看您是否获得了实际 GET/POST 调用的访问控制 header

关于oauth-2.0 - Asp.net Core、JWT 和 CORS header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com