【问题标题】:Using the session to check if client is authenticated in a REST API使用会话检查客户端是否在 REST API 中进行了身份验证
【发布时间】:2015-12-03 03:55:51
【问题描述】:

我正在实现一个带有身份验证的 REST API。我想知道这两种身份验证解决方案中的哪一种更有意义:

1) 让每个方法都进行身份验证,每次调用它们时

输入 api /endpoint/retrieveshoes

{
    "username":"gingo",
    "password":"124",
    "shoes_type":"A"
}

2) 有一个单独的登录方法并使用其他方法的会话来确保客户端经过身份验证。

输入api /endpoint/login

{
    "username":"gingo",
    "password":"124"
}

输入 api /endpoint/retrieveshoes

{
    "username":"gingo"
}

如果我在没有先登录的情况下调用retrieveshoes,我将收到“无效会话”消息。

在解决方案 (1) 中,我每次调用retrieveshoes 时都必须重复验证。

但我想知道使用情况 (2) 中的会话是否安全,即使我使用 HTTPS。这两种解决方案中的哪一种是安全有效的?你知道第三个吗?

【问题讨论】:

  • REST 支持无状态,所以没有会话..

标签: java rest authentication


【解决方案1】:

您可能需要考虑使用具有特定空闲到期时间的身份验证令牌,而不是默认的 HTTP(S) 会话。可以通过使用用户名和密码向/endpoint/login 发送请求来生成此令牌。然后所有后续请求都可以发送该令牌进行身份验证。为了让它更安全一点,您可能希望将用户的 IP 绑定到令牌。虽然这有一些缺点,例如同一网络上具有相同公共地址的任何人都可以使用该令牌,或者如果用户更改网络,他/她可能需要重新登录。

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多