使用oauth2保护我的WebApi1应用程序

时间:2014-01-16 11:31:26

标签: http asp.net-mvc-4 oauth-2.0 asp.net-web-api

我有一个 MVC4应用程序,我使用 WebAPI 1 将其公开给其他应用程序。我想用oauth2保护它。请任何人提供足够的教程来使用 oauth2

我的要求是我需要在我的客户端应用程序请求时(登录后或其他东西)提供一些身份验证标头,并且当它请求我需要检查和验证身份验证标头的任何数据时,我只需要根据结果我应用程序可以提供数据作为响应。

任何人都请给我一个详细的例子,帮助我使用oauth2使我的MVC应用程序安全。

编辑:我有资源服务器(我的MVC4 webApi1应用程序)。实际上我需要的是我必须将我的应用程序作为身份提供商服务提供商)(哪一个提供授权令牌并在客户端应用程序尝试访问时验证它it)使用 oauth2

1 个答案:

答案 0 :(得分:0)

这个例子太长了,无法将它带到这里,我将专注于主要步骤,所有缺失的细节都在伟大的 Pro ASP.NET Web API安全性一书中。

http://www.amazon.com/Pro-ASP-NET-Web-API-Security/dp/1430257822

命名约定:

  • 身份提供商 - 可以对用户进行身份验证的应用程序
  • 资源服务器 - 公开WebAPI服务的应用程序(可以与身份提供程序相同)
  • 客户端应用程序 - 想要调用web api的应用程序
  • 资源所有者 - 使用客户端应用程序的用户

首先,您需要确定要实现的oauth2流的类型。

  • authorization_code - 您的最终用户将通过身份服务器使用其网络浏览器登录客户端应用程序。身份服务器公开客户端应用程序用于获取访问令牌的令牌端点。使用访问令牌,客户端应用程序调用资源服务器,其中WebAPI受OAuth2保护
  • 用户名密码 - 客户端应用程序知道用户名和密码(而不是要求身份服务器对用户进行身份验证),并可以在身份服务器中交换它们以访问令牌
  • client_credentials - 没有最终用户,只是客户端应用程序代表自己调用了一些web api

所有流程都以具有访问令牌的客户端应用程序结束。然后,访问令牌在头中传递,资源服务器端的WebAPI受自定义身份验证属性的保护,该属性根据头中发送的信息设置当前请求的主体。

有大量的细节,但幸运的是,这本书有一个完整的例子,使用DotNetOpenAuth库。你应该能够效仿这个例子。