【问题标题】:How to route JWT Token request from client app, formed with double slashes?如何从客户端应用程序路由 JWT 令牌请求,用双斜杠形成?
【发布时间】:2021-02-27 16:59:40
【问题描述】:

目前我们有一个 WPF 客户端应用程序,它使用 OAuth 向 ASP MVC 应用程序请求不记名令牌。

此配置在定义端点时在启动时进行:

OAuthOptions = new OAuthAuthorizationServerOptions
{
   TokenEndpointPath = new PathString("/Token"),
   Provider = new ApplicationOAuthProvider(PublicClientId),
   AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
   AllowInsecureHttp = true
};

客户端 WPF 应用程序通过向 [resourceBaseAddress/Token] 发出 POST 请求来请求令牌。我将假设的请求内容与我的问题无关。

问题是我的“resourceBaseAddress”包含一个尾部正斜杠,因此请求以http://contoso.com//Token 之类的方式形成(注意双斜杠)。它目前有效。

但是现在我们正在迁移到 ASP.NET Core,因此我不得不添加一个带有 (Jwt) 令牌操作的控制器,我在使用双斜杠路由这个请求时遇到了问题。

由于我无法更改客户端应用程序上的代码,如何正确配置此控制器方法?

【问题讨论】:

    标签: asp.net-core jwt bearer-token


    【解决方案1】:

    重写请求路径的中间件怎么样?你尝试过这样的事情吗?

    例子:

    app.Use(async (context, next) =>
    {
        var url = context.Request.Path.Value;
    
        if (url.EndsWith("//Token"))
        {
            // rewrite and continue processing
            context.Request.Path = "/Token";
        }
    
        await next();
    });
    
    app.UseRouting();
    

    还有一个像这样的简单控制器:

    [Route("[controller]")]
    public class TokenController : ControllerBase
    {
        [HttpPost]
        public string Post()
        {
            return "Token";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 2013-06-12
      • 2018-03-04
      • 1970-01-01
      • 2022-10-06
      • 2019-10-31
      相关资源
      最近更新 更多