如何从客户端应用程序路由JWT令牌请求,用双斜杠形成



目前我们有一个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(Token操作的控制器,我在使用双斜杠路由此请求时遇到了问题。

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

重写请求路径的中间件怎么样?你试过这样的东西吗?

示例:

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";
}
}

最新更新