asp.net – .NET Web API 2 OWIN承载令牌认证
发布时间:2020-07-03 09:06:47 所属栏目: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中HttpContext.Current.User和Thread.CurrentPrin
- asp.net mvc webapi 实用的接口加密方法示例
- 什么是ASP.NET WebForms相当于ASP.NET MVC的ViewData
- 如何使用Fluent Nhibernate中的Automapping进行OR Mapping映
- ASP.NET MVC编辑器模板和Html.EditorFor(…) – 如何消除类
- asp.net-mvc-3 – 使用@ Html.Raw有风险吗?
- dependency-injection – 从ILogger访问当前的HttpContext
- 在ASP.NET中,获取基本UR1请求的最快方法是什么?
- asp.net-mvc – 当Bundling EnableOptimizations为true时,F
- asp.net-mvc – asp.net mvc – string或int的路由(即/ typ
