2014-10-29 88 views
1

我正在尝试使用Thinktecture身份服务器来保护带有angularjs前端的web api。我可以通过API控制器获得来自Identity Server的OAuth凭证用下面的代码:在web api中验证Thinktecture 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

你会得到什么错误? – 2014-10-29 22:55:08

回答

2

老问题 - 我希望你找出答案?

您需要将令牌作为不记载令牌添加到调用Web API的客户端。从.NET客户端会是这样的(这里的“令牌”将是从您的来电RequestResourceOwnerPasswordAsync“结果”):

var client = new HttpClient();  
client.SetBearerToken(token); 
var response = client.GetStringAsync(<yourUrl>).Result; 

在角您可能需要拦截的东西(我没有太多的一个前端的家伙;-)): http://www.codeproject.com/Articles/784106/AngularJS-Token-Authentication-using-ASP-NET-Web-A