我有使用WebApi 2应用程序进行身份验证和授权的MVC前端应用程序。我正在使用JWT令牌。到目前为止,我已经能够成功验证并接收一个令牌......我可以通过使用POSTMAN工具向头部添加授权令牌来进一步访问受限资源([Authorize]属性)。
Authorization: “Bearer <jwt.token.string>”
问题是,我无法拦截MVC管道中的调用以将令牌添加到httpHeader。它总是将我回到登录页面。不是我使用POSTMAN工具时的情况。我没有成功尝试在以下几点注入令牌:
在上述所有情况下,我都会参加活动,因为我可以调试。我强烈怀疑在设置标题之前我正在访问授权点,但是我无法弄清楚正确拦截HttpContext对象并注入Authorization标头的流程序列。
答案 0 :(得分:0)
验证成功后,添加
var ctx = Request.GetOwinContext();
var authenticateResult = await ctx.Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer);
ctx.Authentication.SignOut(DefaultAuthenticationTypes.ExternalBearer);
var applicationCookieIdentity = new ClaimsIdentity(authenticateResult.Identity.Claims, DefaultAuthenticationTypes.ApplicationCookie);
ctx.Authentication.SignIn(applicationCookieIdentity);
这将创建一个签名cookie,您的Authorize属性将自动读取cookie。您的所有请求将随后获得授权。