C# 在ASP.net Web API中进行授权之前,尝试使用OWIN插入授权标头

C# 在ASP.net Web API中进行授权之前,尝试使用OWIN插入授权标头,c#,asp.net-web-api,owin,C#,Asp.net Web Api,Owin,我正在使用Owin进行JWT身份验证。我所有的请求都是未经授权的 我正试图截获对我的web应用程序的所有请求,以便从cookie中检索JWT令牌 使用承载令牌添加授权标头可以正常工作并正确授权 中间件在每个请求中都会被命中,成功地获取cookie,并在上下文对象中成功地更新头 公共void配置AppBuilder应用程序 { app.useJWTBeareAuthenticationNew JWTBeareAuthenticationOptions { TokenValidationParame

我正在使用Owin进行JWT身份验证。我所有的请求都是未经授权的

我正试图截获对我的web应用程序的所有请求,以便从cookie中检索JWT令牌

使用承载令牌添加授权标头可以正常工作并正确授权

中间件在每个请求中都会被命中,成功地获取cookie,并在上下文对象中成功地更新头

公共void配置AppBuilder应用程序 { app.useJWTBeareAuthenticationNew JWTBeareAuthenticationOptions { TokenValidationParameters=新的TokenValidationParameters { IssuerSigningKey=new symmetricsecuritykeyncode.UTF8.GetBytesjwtSecret, ValidateLifetime=true } }; app.useTypeofJWT中间件; var config=新的HttpConfiguration; WebApiConfig.Registerconfig; app.UseWebApiconfig; } 公共类JWT中间件:OwinMiddleware { 公共jwtmiddlewareowinnext中间件:basenext { } 公共重写异步任务InvokeIOwinContext { var name=auth; var cookie=context.Request.Cookies[name]; 如果cookie!=null { 如果string.IsNullOrEmptycontext.Request.Headers.GetAuthorization { context.Request.Headers.AppendAuthorization,承载+cookie; } } 等待下一步; } } 理想的工作流程是:

保存JWT的Cookie随请求一起发送

Owin中间件截取此消息,从cookie中取出令牌并附加一个授权头

API调用使用授权承载头进行身份验证

如果有人对我为什么这么做感到好奇……这是为了让我的网站可以使用仅http的cookies来存储令牌,然后从需要承载令牌的设备上,我可以发送该令牌


相反,我总是得到401授权。我怀疑它试图在Owin截获令牌之前对其进行身份验证?我不确定。

我相信我已经解决了这个问题。这是一个由两部分组成的问题

在我的Startup.cs中,这段代码

TokenValidationParameters=新的TokenValidationParameters { IssuerSigningKey=new symmetricsecuritykeyncode.UTF8.GetBytesjwtSecret, ValidateLifetime=true } }; 导致Owin始终将令牌返回为未经授权。我一定是在某个时候改变了这一点,从来没有重新检查过。我检查了ValidIssuer和Validudience,我们又好了

另一个难题是,在JWT认证之前,首先加载我的定制中装