繁体   English   中英

带有代理的 ASP .net 核心 jwt 身份验证

[英]ASP .net core jwt authentication with proxy

我正在为我的公司实现一个 asp .net core web API。 身份验证应通过内置的 jwt 承载身份验证进行处理。

我正在努力解决的问题是,我在代理后面工作。 因此,对于令牌验证,我面临 407 代理身份验证失败响应。

据我所知,在 .net 框架中,可以在 web.config 中定义默认代理,但对于 .net 核心,我找不到任何类似的功能。

是否可以为 jwt 身份验证“注入”代理设置,或者如果没有,是否还有其他方法可以在代理后面使用此身份验证?

对于 ASP.NET Core,在 Web.config 中定义全局代理的选项已经消失。

不过,大多数通过 HTTP 执行任何操作的 API 都允许您设置 HttpMessageHandler。 您可以为该 MessageHandler 设置代理。

例如,假设您使用默认的 JwtBearer 身份验证,您可以尝试这种方法:

appsettings.json:

"Proxy": {
    "ProxyAddress": "http://MyProxy:8080"
  },

在您的 ConfigureServices 方法中,您可以:

services.AddAuthentication()
   .AddJwtBearer("Bearer", o =>
   {
      o.BackchannelHttpHandler = new HttpClientHandler
      {
         Proxy = new WebProxy(Configuration["Proxy:ProxyAddress"])
      };
  });

根据您使用的流程,您可能还需要在其他/附加处理程序上设置代理。 此外,如果您需要对 Proxy 进行更细粒度的控制,您始终可以编写一个实现 IWebProxy 的类并使用它,而不是用代理地址新建一个 WebProxy。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM