gpt4 book ai didi

c# - 使用 Net Core 2 的 JWT 远程身份验证错误

转载 作者:太空狗 更新时间:2023-10-29 21:59:57 26 4
gpt4 key购买 nike

我目前有两个不同的项目,一个是 MainAPI,它将公开我的 Web 客户端的功能,另一个是 AuthAPI,它处理所有的身份验证请求,都是使用 netcore 2 构建的。

如果我直接调用 AuthAPI,它将根据需要处理请求。

当我尝试让 AuthAPI 对 MainAPI 请求进行身份验证时,它失败了,尽管我可以看到请求进出 AuthAPI。

这是我在 MainAPI Startup.cs 中的服务身份验证配置:

services.AddAuthentication(option =>
option.DefaultAuthenticateScheme = "Bearer")
.AddJwtBearer(options =>
{
options.MetadataAddress = "http://localhost:5019/auth/api/info";
options.Authority = "http://localhost:5019";
options.Audience = AUDIENCE;
options.RequireHttpsMetadata = false;
options.SaveToken = true;

options.BackchannelHttpHandler = new BackChannelHttpHandler();

options.IncludeErrorDetails = true;

});

这是 BackChannelHttpHandler 类:

public class BackChannelHttpHandler : HttpMessageHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{

HttpClient client = new HttpClient(new HttpClientHandler(), disposeHandler: false);
client.DefaultRequestHeaders.Add("Accept", "application/json");
var res = await client.GetAsync(request.RequestUri);
return res;
}
}

我调用的 Controller 作为 Authorize 注释如下:

[Authorize(AuthenticationSchemes = "Bearer")]

至于 AuthAPI,我在 Startup.cs 中配置了 Cors:

    services.AddCors(options =>
{
options.AddPolicy("CorsConfig",
builder => builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.Build());
});

在 AuthAPI Controller 中,我还有 [EnableCors("CorsConfig")] 注释。

我可以获得对 AuthAPI Controller 的调用,它会返回一个 HTTP-200,但在我的 MainAPI 中,授权过程中的某些东西被调用,取消授权,我对 MainAPI Controller 的调用永远不会执行。

我的问题是,我在 MainAPI 身份验证过程中做错了什么,它自己验证 token ,并使请求无效。

最佳答案

注意这个参数options.Audience;它应该有可用的端点。

或者您可以在应用程序之间共享 key 以提高工作效率。每个端点都可以从 token 中读取有效负载,但只有 auth-server 可以生成 token 。

关于c# - 使用 Net Core 2 的 JWT 远程身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912782/

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