在 web api 中验证 Thinktecture OAuth 令牌
Posted
技术标签:
【中文标题】在 web api 中验证 Thinktecture OAuth 令牌【英文标题】:Validate Thinktecture OAuth Token in web api 【发布时间】:2014-12-25 11:21:28 【问题描述】:我正在尝试使用 Thinktecture 身份服务器来保护带有 angularjs 前端的 Web api。我可以使用以下代码通过 api 控制器从 Identity Server 获取 OAuth 令牌:
[HttpPost]
public async Task<JObject> LogOn(UserModel userModel)
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate return true; ;
var client = new OAuth2Client(
new Uri("https://identity.app.net/issue/oauth2/token"),
"dd",
"secret");
var result =
await
client.RequestResourceOwnerPasswordAsync(userModel.UserName, userModel.Password,
@"http://my.app.net/");
return result.Json ;
这会返回一个令牌。如果令牌在请求的标头中传递,我似乎无法弄清楚如何让 [Authorize] 标记工作。
【问题讨论】:
你得到什么错误? 【参考方案1】:老问题 - 我希望你能找到答案?
您需要将令牌作为不记名令牌添加到调用 Web api 的客户端。从 .Net 客户端它会是这样的(其中“令牌”将是您调用 RequestResourceOwnerPasswordAsync 的“结果”):
var client = new HttpClient();
client.SetBearerToken(token);
var response = client.GetStringAsync(<yourUrl>).Result;
在 Angular 中你可能需要拦截一些东西(我不是一个前端的人 ;-)): http://www.codeproject.com/Articles/784106/AngularJS-Token-Authentication-using-ASP-NET-Web-A
【讨论】:
以上是关于在 web api 中验证 Thinktecture OAuth 令牌的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 在所有 api 路由中使用 Web 身份验证重定向到主页
在 web api 中验证 Thinktecture OAuth 令牌
Web Api 如何在隐式(或授权)授权流(OpenId)中验证令牌?
在 ASP.NET Web API 中处理 ModelState 验证