使用JwtAuthForWebAPI的Web APi2身份validation不接受JWT令牌
我遵循了教程,但它似乎与JWT无法正常工作,但基本身份validation还可以。
我下载并安装了JwtAuthForWebAPI。 我还生成了JWT令牌并尝试进行API调用,但错误是HTTP/1.1 401 Unauthorized
。
我是否必须实现/修改任何内容以将声明从JWT转移到Thread.CurrentPrincipal和HttpContext.CurrentPrincipal?
我的代码很简单:global.asax.cs:
GlobalConfiguration.Configuration.MessageHandlers.Add( new JwtAuthenticationMessageHandler { AllowedAudience = reader.AllowedAudience, Issuer = reader.Issuer, SigningToken = builder.CreateFromKey(reader.SymmetricKey) });
Web.config文件:
调用示例
GET http://localhost:34669/api/v1/tasks/8 HTTP/1.1 Host: localhost:34669 Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjb3JwIiwiYXVkIjoiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIsIm5iZiI6MTQwMDU1Mzc1NywiZXhwIjoxNzE2MTcyOTU3LCJ1bmlxdWVfbmFtZSI6ImJob2dnIiwiZ2l2ZW5fbmFtZSI6IkJvc3MiLCJmYW1pbHlfbmFtZSI6IkhvZ2ciLCJyb2xlIjpbIk1hbmFnZXIiLCJKdW5pb3JXb3JrZXIiXX0.Ls73kz80rCaCNqzc3K32BVO9_LnJDL8c1g5AXKIzn8w
哈哈,我在本书的教程中发现了错误:)
我的例子中有一个错误的JWT值:)正确的调用应该是这样的。 我不得不手动重新创建JWT令牌。
GET http://localhost:34669/api/v1/tasks/8 HTTP/1.1 Host: localhost:34669 Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1bmlxdWVfbmFtZSI6ImJob2dnIiwiZ2l2ZW5fbmFtZSI6IkJvc3MiLCJmYW1pbHlfbmFtZSI6IkhvZ2ciLCJyb2xlIjpbIk1hbmFnZXIiLCJTZW5pb3JXb3JrZXIiLCJKdW5pb3JXb3JrZXIiXSwiaXNzIjoiY29ycCIsImF1ZCI6Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLCJleHAiOjE3NTIwNjgzNjAsIm5iZiI6MTQzNjQ0OTE2MH0.t1lK0ZEA_IZbdiiYeJuuLVeeh1CFSiodzmRPdmezv3c
- Web Web API中的严格映射(Over-Posting)
- 在Web.API控制器中自动反序列化为类似字符串的类
- Libsodium-net – 无法加载DLL’libsodium.dll
- ASP.NET Web API 2和部分更新
- 返回HttpResponseMessage并配置Application Insights时,WebAPI响应永远不会完成
- 使用HttpClient将字节数组发布到Web API服务器
- .NET WebApi如何防止“$ ref”:JSON的“x”输出
- 在返回json’d数据时卸载“急切加载”属性导致问题
- 我应该在哪里插入我的自定义DefaultContractResolver JSON.NET?