gpt4 book ai didi

.net-core - .NET Core JWTBearer 跳过自签名证书验证以与身份服务器进行本地通信

转载 作者:行者123 更新时间:2023-12-04 13:56:49 25 4
gpt4 key购买 nike

我有两个 API 项目,一个基于 .NET Framework 4.6.2(旧 API),另一个基于 .NET Core 2.0。旧 API 可以非常简单地禁用自签名证书验证:

System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

但是,此代码在 .NET Core 中不起作用(即使它编译得很好),并且当 API 尝试通信时(特别是当它尝试从身份服务器获取发现文档时,它会导致我出现问题,这在反向代理,在此环境中,具有用于 https 的自签名证书)。我看过 similar questions on StackOverflow但所有答案都与 HttpClient 的创建方式有关。对我来说,问题是我无法控制 HttpClient 的创建方式( token 验证是中间件,我看不到任何控制它如何创建 HttpClient 的方法),所以我想知道是否有全局方式在 .NET Core 中跳过自签名证书验证?

编辑:我的问题似乎与 this issue 密切相关,但是我已经获取了自签名证书并将其加载到容器(运行 api 的位置)和我的本地计算机(运行容器的位置)的受信任根中,但我仍然收到证书验证错误。

最佳答案

我应该更仔细地查看 JwtBearerOptions,结果我可以设置 options.BackchannelHttpHandler ,例如:options.BackchannelHttpHandler = new HttpClientHandler { ServerCertificateCustomValidationCallback = delegate { return true; } }; - 现在它按预期工作。

编辑:虽然可以在 .NET Core 中跳过证书验证,但我最终放弃了这种方法,因为查找所有具有 HttpClient 的组件并修改 HttpClient 以跳过证书验证变得太麻烦了。我最终采用的方法是使用 easy-rsa 创建 CA。然后生成由 CA 签名的证书。然后唯一的步骤是将 CA 证书导入容器中,它们将信任其他证书。听起来可能很多,但 easy-rsa 命令界面相当简单,而且最终并没有付出那么多努力。

关于.net-core - .NET Core JWTBearer 跳过自签名证书验证以与身份服务器进行本地通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48550837/

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