保护 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但是足够了吗?
所以基本上:
- 客户端连接给定 username/password
- 客户端取回不记名令牌
- 客户端在每个 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-
保护频道
当您有多个不同的客户端要使用时,保护 Web API 的最佳方法是什么?每个客户端都应该有自己的 API 键来连接。 现在我已经阅读了不同的东西,但我仍然有一些疑问。
我找到了这个:http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/#comments但是足够了吗?
所以基本上:
- 客户端连接给定 username/password
- 客户端取回不记名令牌
- 客户端在每个 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-
保护频道