保护 ASP.NET Web API 2 多个客户端使用它的最佳方法

Best way to secure ASP.NET Web API 2 where multiple client use it

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

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

所以基本上:

  1. 客户端连接给定 username/password
  2. 客户端取回不记名令牌
  3. 客户端在每个 post 到 api 中使用此令牌,直到时间戳结束

我也读过关于给每个客户一个他可以使用的 API 密钥:http://bitoftech.net/2014/12/15/secure-asp-net-web-api-using-api-key-authentication-hmac-authentication/

最好的方法是什么?

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

的受保护资源

OAuth2 和 OpenIdentity 中使用的基于令牌的方法传播非常广泛,支持各种场景(Web 应用程序、移动、桌面应用程序、微服务)。

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

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

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

此外,我认为您可以使用 SSL-

保护频道

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