2014-10-29 106 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