ASP .net core代理JWT身份验证

3
我正在为我的公司实现一个asp .net core web API。身份验证应该通过内置的jwt承载验证进行处理。
我遇到的问题是,我在代理后面工作。因此,在令牌验证中,我面临着407代理身份验证失败的响应。
据我所知,在.net framework中,有可能在web.config中定义默认代理,但是对于.net core,我找不到任何类似的功能。
是否可以为jwt身份验证“注入”代理设置,如果不行,是否有其他方法可以在代理后面使用此身份验证?
1个回答

4

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

大多数需要使用 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"])
      };
  });

根据您使用的流程,您可能还需要在其他/附加处理程序上设置代理。此外,如果您需要对代理进行更精细的控制,您可以编写实现IWebProxy接口的类,并将其用于代替使用代理地址新建的WebProxy。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接