我试图使用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]标签工作。
答案 0 :(得分:2)
老问题 - 我希望你找到答案?
您需要将令牌作为承载令牌添加到调用web api的客户端。从一个.Net客户端,它将是这样的(其中&#34;令牌&#34;将是&#34;结果&#34;来自您对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