什么是REST Spring Boot中用户授权和认证的最佳实践?
我正在构建一个包含标准页面和面向移动设备的REST API的Web应用程序。我查阅了许多关于Spring安全性的文章,基本上大部分都采用一些过滤器方法来允许或阻止REST调用。然而,在我的情况下,我有一些基于用户的身份验证逻辑。例如,有一个名为
最初,我想使用以下身份验证方案:
1. 用户调用身份验证API并传递名称/密码或Cookie。 2. 系统生成短期令牌,并将其保存在数据库中。 3. 用户获取此令牌,更新其Cookie(以便Web应用程序中的JS可以读取和使用它)。 4. 进行REST调用时传递Cookie。在Controller中,提取令牌,检查其是否过期,查询数据库以验证令牌并获取用户ID。 5. 根据用户ID,REST将被允许或阻止。
这是否是实施的正确方法?在阅读有关Spring Boot安全性的文章后,我脑子里一团糟。至少:会话身份验证对我无效(REST是无状态的)。我想为移动设备进行身份验证,而不在其中存储登录/密码。
将此令牌本身传递到REST正文中是否有意义?对于GET方法呢?
非常感谢您分享您的知识。
我正在构建一个包含标准页面和面向移动设备的REST API的Web应用程序。我查阅了许多关于Spring安全性的文章,基本上大部分都采用一些过滤器方法来允许或阻止REST调用。然而,在我的情况下,我有一些基于用户的身份验证逻辑。例如,有一个名为
/update
的API,用于更新用户信息,用户可以更新自己的信息,但不能更新其他人的信息。最初,我想使用以下身份验证方案:
1. 用户调用身份验证API并传递名称/密码或Cookie。 2. 系统生成短期令牌,并将其保存在数据库中。 3. 用户获取此令牌,更新其Cookie(以便Web应用程序中的JS可以读取和使用它)。 4. 进行REST调用时传递Cookie。在Controller中,提取令牌,检查其是否过期,查询数据库以验证令牌并获取用户ID。 5. 根据用户ID,REST将被允许或阻止。
这是否是实施的正确方法?在阅读有关Spring Boot安全性的文章后,我脑子里一团糟。至少:会话身份验证对我无效(REST是无状态的)。我想为移动设备进行身份验证,而不在其中存储登录/密码。
将此令牌本身传递到REST正文中是否有意义?对于GET方法呢?
非常感谢您分享您的知识。