【问题标题】:REST API with token based authentication带有基于令牌的身份验证的 REST API
【发布时间】:2015-06-22 08:49:22
【问题描述】:

我想用 AngularJS 开发一个网站。在后端,我将使用 Codeigniter REST 框架。我有一些安全问题,我不想在没有解决这些问题的情况下开始开发。

我不想使用 api key 之类的东西,因为客户端可以访问它,而且我认为它不会保护我在 api 端的方法。我正在考虑使用基于令牌的身份验证,但我不知道它是否适合我的情况。我是否需要为每个对服务器的请求验证用户?或者仅将 api 密钥用于后端就足够了吗?而且我还计划在未来将这个 api 用于不同平台上的应用程序。

我无法决定该怎么做。如果有人给我一些建议,我将非常感激。

【问题讨论】:

    标签: angularjs codeigniter api rest token


    【解决方案1】:

    您可以使用 API 密钥,但是 - 正如您所写 - 它是纯粹的保护和易于访问的价值 - 潜在的滥用者只需要查看源或调查查询。

    通常,REST API 使用令牌进行保护。在 session 开始时(不是传统意义上的 - 而是交互),客户端需要自己授权,如果一切都正确,它将获得一个令牌。此令牌应作为标头包含在所有需要保护的后续请求中。您可以在后端使用简单的过滤器,通过验证发送的令牌是否有效来保护选定的端点。这就是它的工作原理。

    【讨论】:

    • JSON web token 标准经常用于此目的,并且在大多数框架中都有实现。
    • 谢谢大家回答问题!我还发现这个repository 可能对你有用。
    • @MarkHughes,据我了解,双方都需要秘钥才能使用JWT?那么它在 JS 环境中是如何工作的呢?
    • 使用 JWT,您的服务器端将创建一个包含适用标识/角色的令牌,然后使用密钥对其进行签名。然后,客户端每次发出请求时都会提供此令牌(通常作为 HTTP 标头)。然后服务器可以检查签名是否有效(使用它的密钥),这证明客户端没有篡改它。客户端无需尝试“解密”或“理解”令牌,它只是将其传递回去。
    • 现在说得通了。非常感谢你!这样的令牌如何传递给客户端?授权后?还是在开发时?当涉及到开发时,它可能会出现问题,例如角色正在改变..
    猜你喜欢
    • 2016-07-16
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2018-11-24
    • 2017-04-19
    • 1970-01-01
    相关资源
    最近更新 更多