ASP.Net Web API如何验证OAuth 2.0令牌?

时间:2014-07-07 15:05:35

标签: asp.net .net oauth-2.0 asp.net-web-api

我正在使用我们的IDP服务器创建一个测试项目。我们创建了一个简单的Web API示例项目,它在get方法上返回用户的声明。我们还使用OAuth Flow GrantResourceOwnerCredentials 或规范中的流程3创建了令牌。很少有事情我不太了解,需要一些帮助来获得更多的理解: -

  • Web API如何知道令牌来自授权 客户端以及如何验证。

  • 在Web Api代码中,我们可以覆盖并检查OAuth传入令牌及其验证。在生产环境中,我们将为IDP和Web API提供单独的HA服务器,那么我们是否需要在Web配置中指定一些证书?

  • 我们可以为Web Api提供所有Auth机制吗?像基本的,OAuth等。

1 个答案:

答案 0 :(得分:1)

  

Web API如何知道令牌来自授权客户端以及如何验证。

通常,访问令牌通过HTTP Headers传递,例如Authorization。您可以在特定路径上的web api中使用处理程序,并使用您的逻辑

检查此标记
  

在Web Api代码中,我们可以覆盖并检查OAuth传入   令牌及其验证。在生产环境中,我们会有   单独的HA服务器用于IDP和Web API,因此我们需要指定一些   Web配置中的证书?

如上所述。最好的地方是处理程序

public class AuthenticationHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        //...
    }
 }

并且不要忘记配置为某些特定路由使用您的身份验证处理程序

public static void Register(HttpConfiguration config)
{
   // ...
   config.MessageHandlers.Add(new AuthenticationHandler());
   // ...
}

只有在您的逻辑需要此证书来验证令牌时才需要证书。最好的方法是在Windows证书存储中存储和读取它,并在web.config中配置您需要的证书指纹,因此web.config中没有用户名或纯文本密码。

  

我们可以为Web Api提供所有Auth机制吗?喜欢   基本的,OAuth等。

是的,您可以将基本身份验证与OAuth一起使用,只需使用某些内容进行区分,例如适合自动化的不同HTTP标头,但我不清楚,为什么您需要支持,例如与oauth一起基本,也许只使用更简单的基础更有意义。

您需要的大部分信息都会在此处收集http://www.asp.net/web-api/overview/security