asp.net – .NET Web API 2 OWIN承载令牌认证
发布时间:2020-07-03 09:06:32 所属栏目:asp.Net 来源:互联网
导读:我在我的.NET Web应用程序中实现一个Web API 2服务架构。消费请求的客户端是纯javascript,没有mvc / asp.net。我使用OWIN尝试启用令牌身份验证根据这篇文章 OWIN Bearer Token Authentication with Web API Sample.我似乎在授权后缺少一些验证步骤。 我的登
我在我的.NET Web应用程序中实现一个Web API 2服务架构。消费请求的客户端是纯javascript,没有mvc / asp.net。我使用OWIN尝试启用令牌身份验证根据这篇文章 OWIN Bearer Token Authentication with Web API Sample.我似乎在授权后缺少一些验证步骤。 我的登录名: [HttpPost] [AllowAnonymous] [Route("api/account/login")] public HttpResponseMessage Login(LoginBindingModel login) { // todo: add auth if (login.UserName == "a@a.com" && login.Password == "a") { var identity = new ClaimsIdentity(Startup.OAuthBearerOptions.AuthenticationType); identity.AddClaim(new Claim(ClaimTypes.Name,login.UserName)); AuthenticationTicket ticket = new AuthenticationTicket(identity,new AuthenticationProperties()); var currentUtc = new SystemClock().UtcNow; ticket.Properties.IssuedUtc = currentUtc; ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromMinutes(30)); DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",accessToken); return new HttpResponseMessage(HttpStatusCode.OK) { Content = new ObjectContent<object>(new { UserName = login.UserName,AccessToken = Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket) },Configuration.Formatters.JsonFormatter) }; } return new HttpResponseMessage(HttpStatusCode.BadRequest); } 它返回 { accessToken: "TsJW9rh1ZgU9CjVWZd_3a855Gmjy6vbkit4yQ8EcBNU1-pSzNA_-_iLuKP3Uw88rSUmjQ7HotkLc78ADh3UHA3o7zd2Ne2PZilG4t3KdldjjO41GEQubG2NsM3ZBHW7uZI8VMDSGEce8rYuqj1XQbZzVv90zjOs4nFngCHHeN3PowR6cDUd8yr3VBLdZnXOYjiiuCF3_XlHGgrxUogkBSQ",userName: "a@a.com" } 然后我尝试设置HTTP头承载在AngularJS进一步的请求喜欢: $http.defaults.headers.common.Bearer = response.accessToken; 到类似API的API: [HttpGet] [Route("api/account/profile")] [Authorize] public HttpResponseMessage Profile() { return new HttpResponseMessage(HttpStatusCode.OK) { Content = new ObjectContent<object>(new { UserName = User.Identity.Name },Configuration.Formatters.JsonFormatter) }; } 但无论我做什么这项服务是“未经授权”。我在这里缺少什么? 解决方法通过使用承载标记设置标题’授权’来解决:$http.defaults.headers.common["Authorization"] = 'Bearer ' + token.accessToken; (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 过滤ASP.NET Core API中的属性
- asp.net core 实现一个简单的仓储的方法
- 如何通过ASP.NET中的另一个下拉列表过滤下拉列表值,c#
- asp.net-mvc – ACS安装,但MVC 4.0应用程序仍然重定向,无法
- asp.net – 是否可以根据用户角色隐藏/显示Kendo网格列?
- asp.net-mvc – 如何正确识别vs2008版本级别?
- asp.net – HttpWebRequest正在为404抛出异常
- asp.net – Web Forms MVP项目有哪些好的资源?
- 我可以使用ASP.NET成员身份实体框架吗?
- asp.net – 是否有可能过滤SignalR中的接收器?
推荐文章
站长推荐
- [转]谈谈技术原则,技术学习方法,代码阅读及其它
- 有没有办法加快asp.net中的编辑 – 编译 – 调试
- ASP.Net MVC cookies – 防篡改?
- asp.net-mvc – ASP.NET捆绑/分类:包括动态生成
- asp.net-mvc – 什么时候使用ViewData而不是View
- 使用ASP.NET Identity 2.0和MVC 5进行自定义单点
- asp.net – Windows应用程序与Web应用程序开发
- asp.net core webapi 服务端配置跨域的实例
- asp.net – 防止XSS(跨站脚本)
- asp.net – 什么时候Response.IsClientConnected
热点阅读