如何从客户端应用程序路由 JWT 令牌请求,用双斜杠形成?
Posted
技术标签:
【中文标题】如何从客户端应用程序路由 JWT 令牌请求,用双斜杠形成?【英文标题】:How to route JWT Token request from client app, formed with double slashes? 【发布时间】: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) 令牌操作的控制器,我在使用双斜杠路由这个请求时遇到了问题。
由于我无法更改客户端应用程序上的代码,如何正确配置此控制器方法?
【问题讨论】:
【参考方案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";
【讨论】:
以上是关于如何从客户端应用程序路由 JWT 令牌请求,用双斜杠形成?的主要内容,如果未能解决你的问题,请参考以下文章
如果用于认证的JWT令牌保存在HTTP-Only cookie中,你如何从cookie中读取它,以便我可以在请求头中包含它?