【问题标题】:Best way to secure ASP.NET Web API 2 where multiple client use it [closed]保护多个客户端使用它的 ASP.NET Web API 2 的最佳方法 [关闭]
【发布时间】:2017-05-28 12:31:14
【问题描述】:

当您要使用多个不同的客户端时,保护 Web API 的最佳方法是什么?每个客户端都应该有自己的 API 密钥来连接。 现在我已经阅读了不同的内容,但我仍然有一些问题。

我找到了这个:http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/#comments,但这足够了吗?

所以基本上:

  1. 客户端使用给定的用户名/密码连接
  2. 客户端获取不记名令牌
  3. 客户端在每个发布到 api 的帖子中使用此令牌,直到时间戳结束

我还阅读了关于为每个客户端提供一个他可以使用的 API 密钥:http://bitoftech.net/2014/12/15/secure-asp-net-web-api-using-api-key-authentication-hmac-authentication/

最好的方法是什么?

【问题讨论】:

    标签: c# asp.net-mvc api token hmac


    【解决方案1】:

    通过使用基于令牌的身份验证,您走在了正确的轨道上。这是一个显示实现细节的链接-

    Token based authentication in Web API without any user interface

    此外,我认为您可以使用 SSL 保护通道-

    http://www.c-sharpcorner.com/UploadFile/55d2ea/creating-and-using-C-Sharp-web-application-over-https-ssl/

    【讨论】:

      【解决方案2】:

      OAuth2 和 OpenIdentity 中使用的基于令牌的方法非常普及,并且支持广泛的场景(Web 应用程序、移动设备、桌面应用程序、微服务)。

      有一些很好的库可以提供和使用令牌。它们应该优于实现您自己的协议。后来的方法更容易出错并且更难被其他客户端使用(如果将来有需要)。我建议看一下 IdentityServer(它是开源的)。介绍可以找here

      一般来说,我建议深入了解有关基于令牌的身份验证的博客 - 这是一个很大的话题,但值得。

      【讨论】:

      • 好的,那么令牌方法就是要使用的方法。谢谢
      【解决方案3】:

      是的,OAuth2 是一种用于保护资源的非常标准的协议,我会推荐它而不是滚动自定义实现。这个想法是每个客户端都会收到一个 client_id/client_secret 对(不是用户名、密码),并使用它们从 OAuth 颁发者那里获取 Bearer 令牌。然后这些令牌可用于访问 Web API 的受保护资源。

      【讨论】:

      • 所以基本上我需要为每个客户提供一个 client_id 和 client_secret。我应该同时使用 GUID 吗?
      • 好的,那么令牌方法就是要使用的方法。谢谢
      猜你喜欢
      • 2021-06-25
      • 2020-05-14
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2012-07-31
      相关资源
      最近更新 更多