使用会话检查客户端是否在REST API中进行了身份验证

时间:2015-09-07 14:44:50

标签: java rest authentication

我正在使用身份验证实现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"
}

如果我在没有先登录的情况下致电检索船只,我将收到消息"无效会话"。

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

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

1 个答案:

答案 0 :(得分:1)

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