有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用会话检查客户端是否在RESTAPI中经过身份验证

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

1)让每个方法在每次调用时进行身份验证

输入api/endpoint/retrieveshoes

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

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

输入api/端点/登录

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

输入api/endpoint/retrieveshoes

{
    "username":"gingo"
}

如果我没有先登录就调用retrieveshoes,我将收到消息“无效会话”

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

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


共 (1) 个答案

  1. # 1 楼答案

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