【问题标题】:Why not Basic Auth everytime instead JWT?为什么不是每次都使用 Basic Auth 而不是 JWT?
【发布时间】:2016-10-27 19:01:52
【问题描述】:

我正在用 Hapi 编写一个 RESTFUL API,我不知道 API 身份验证方法。

假设我们在 HTTP/1.1 中使用 SSL/TLS,为什么我们需要 JSON Web Token (JWT) 之类的东西,而我们已经有了 HTTP 基本身份验证。我们可以使用 HTTP Basic Auth 保护每个端点,因此我们甚至不需要像 '/login' 这样的登录路由。

那么,这些身份验证方案、OAuth 和 JWT 的意义何在?

谢谢。

【问题讨论】:

    标签: rest authentication hapijs


    【解决方案1】:

    OAuth 和 JWT 使用令牌,而不是密码。令牌是每个应用程序和站点唯一生成的。如果有人窃取了令牌,他们并没有窃取您的密码,并且该令牌仅适用于该会话。

    将此与基本身份验证进行对比,这是一个实际的用户密码。他们不仅可以随时重复使用该密码,还可以将该密码用于使用相同密码的任何其他服务。窃取令牌不允许这样做。

    【讨论】:

    • 如果我错了,请纠正我,我们在这些方法中创建了一个抽象层以使身份验证状态成为临时状态,因此它们将随着时间的推移而过期,其中 HTTP 身份验证方案使用永久哈希。还有一个问题:第一次请求获取令牌会随着时间的推移而变化吗?我的意思是,我们需要向/login 之类的端点发送请求才能获取身份验证令牌,它会改变吗?此外,从性能方面来看,我们是否需要在这些流中的每个请求中对数据库进行查询(而不是强制您将状态保存在客户端)?
    • @Leviathlon - 是的,每次登录时令牌都会发生变化。无论您是否访问数据库都是服务器端实现的一部分。有些人可能会在缓存中保存该令牌以及相关的身份信息。有些可能每次都会访问数据库。这在很大程度上取决于您和/或您用来实现它的库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2017-12-17
    相关资源
    最近更新 更多