【问题标题】:ASP .net core jwt authentication with proxy带有代理的 ASP .net 核心 jwt 身份验证
【发布时间】:2019-06-23 18:00:09
【问题描述】:

我正在为我的公司实现一个 asp .net 核心 Web API。认证应该通过内置的jwt承载认证来处理。

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

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

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

【问题讨论】:

    标签: c# asp.net-core jwt


    【解决方案1】:

    在 Web.config 中定义全局代理的选项在 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。

    【讨论】:

      猜你喜欢
      • 2017-05-13
      • 2017-12-06
      • 2019-11-03
      • 2019-02-23
      • 2017-09-11
      • 2020-04-10
      • 2023-04-01
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多