使用令牌保护REST API的标准方法是什么?

时间:2015-12-29 06:50:25

标签: node.js rest security oauth

以下是我要做的事情:

我有使用REST API提供数据的服务器,但我只想让我的移动客户端(APP)访问它。

我想使用类似的系统,用户可以在其中创建电子邮件/密码登录。之后,用户可以使用API​​访问某些数据。

OAuth2是正确使用的吗?

或者我只是尝试创建自己的协议并为用户生成令牌。并让用户在所有API请求上附加令牌。 (这是我感到困惑的地方。我可以使用OAuth吗?或者甚至需要使用OAuth?如果不是,有一种标准的HTTP方式可以做到这一点吗?我也想使用刷新令牌,但是我'我不确定如果我应该创建自己的方法。

3 个答案:

答案 0 :(得分:1)

OAuth2可能是最好和最广泛使用的解决方案。我会选择那个。

实施您自己的身份验证/授权协议几乎总是以灾难告终,除非您对加密和底层协议有非常深入的了解。

答案 1 :(得分:0)

请注意,OAuth不是身份验证协议 - 这似乎是您所需要的 - 而是授权协议。您的服务器是请求OAuth提供商拥有的资源的客户端 - 您需要的是什么?我猜不是。

您更需要的是身份验证协议 - 通常通过每次请求发送一些令牌来实现 - @Julian passport.js提到的似乎正在完成您需要的工作。

基本上远离实施自定义解决方案。您真的需要广泛的知识来实现​​可靠和安全的身份验证方案。

JSON网络令牌可能也是一种方式。

答案 2 :(得分:0)

如果客户端应用程序仅由您开发,则不需要OAuth。仅当您希望允许第三方客户端应用程序以受限制的权限访问(您的服务)用户数据时才需要OAuth。

相关问题:

  1. Understanding the need of client id, client secret in oauth 2.0
  2. How to verify which resources each user can access with OAuth and OpenID Connect?
  3. OAuth 2.0 Authorization Server and Access Tokens
  4. 但是,如果您可能希望将来允许第三方客户端应用程序访问您的系统,那么实施Resource Owner Password Credentials Grant可能是明智的,OAuth 2.0https://docs.angularjs.org/api/ng/directive/ngOptions之一从一开始就为未来的可扩展性而流动。