【问题标题】:App/API authentication approach advice应用程序/API 身份验证方法建议
【发布时间】:2016-07-16 22:37:20
【问题描述】:

我正在构建一个移动应用程序 (Ionic/Cordova),它将调用一个 API (NodeJS),我正在尝试提出一种既简单又有效的用户身份验证方法:

  1. 让用户登录移动应用并
  2. 保护 API,以便只有登录用户才能调用 API
  3. API 可以识别调用它的用户

理想情况下,我会使用 Auth0 之类的东西将用户登录到应用程序,因为我不想处理密码等问题。

所以我知道我可以构建我的 HTML5/Javascript 应用程序并使用 Auth0,它会将用户登录到应用程序,但我想了解的部分是如何设置它,以便在用户登录和他们的应用调用 NodeJS API,API 代码会知道用户是谁?

我可以只使用 Auth0 的 NodeJS 护照模块,然后将令牌从应用程序传递到 API,然后它会像魔术一样工作吗?或者我是否需要在 API 本身中做一些不同的事情,比如构建一个 oauth 机制?

对于如何在这种情况下保护 API 的任何建议,我们将不胜感激。理想情况下,我不想在 API 中构建自己的身份验证/令牌系统。

【问题讨论】:

    标签: node.js cordova authentication api-design auth0


    【解决方案1】:

    是的,护照也可以帮助您开发简单的身份验证机制。比如用户名密码。登录一次并保持登录状态一段时间。

    check this tutorial

    要获取令牌,您必须添加登录 API。在登录 API 中,您验证用户名和密码。然后生成一个 jwt 令牌并传递给客户端。

     var token = jwt.encode(user, config.secret);
    

    现在在您的移动应用程序中,您可以在客户端保存为 cookie 或本地存储。

    window.localStorage.setItem('token', 'the-long-access-token');
    

    然后在您调用受限的 API 之后。你传递令牌。像这样

    var token = window.localStorage.getItem('token');
    
     if (token) {
       $.ajaxSetup({
         headers: {
          'x-access-token': token
        }
      });
    }
    

    【讨论】:

    • 嗨,不是在获取有关客户端应用程序的信息。我想知道我应该如何保护 API。只是检查客户端应用程序是否传递了 ID_TOKEN 就足够了吗?
    • 是的,如果通过保护您的意思是经过身份验证。那么显然这就是我上面写的全部内容。令牌仅在登录后生成。很难攻击它。
    • 如果我从字面上看 Protrcting API 的意思,媒体是未知的。在这种情况下,您可以添加称为 API 密钥的额外密钥作为登录参数。这仅对该应用程序是唯一的。
    • 那么如何使用用户应用传递的令牌保护 API?
    • 此API密钥类似于favebook生成的开发者API密钥和secret,只允许授权开发者使用
    猜你喜欢
    • 1970-01-01
    • 2013-11-19
    • 2012-09-25
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多