在web api中验证Thinktecture OAuth令牌

时间:2014-10-29 16:26:02

标签: asp.net-web-api oauth-2.0 thinktecture-ident-server

我试图使用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 个答案:

答案 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