我使用 Spring Boot 和 Spring Security 构建了一个 REST 服务进行身份验证。我对 Spring Boot 和 Spring Security 都很陌生。我在一个 JAR 文件中创建了一个身份验证模块。前端客户端向身份验证模块发送带有用户名和密码的请求。身份验证模块然后根据数据库对用户的详细信息进行身份验证。如果身份验证成功,则会创建一个 JWT,然后将其发送回客户端。用户名和角色被编码到 JWT 中。然后,当从单独的 JAR 文件中构建的其他 REST 服务端点请求资源时,JWT 用于验证用户。有几件事我不确定。
在 Spring Security 中,是否为每个用户创建了一个身份验证对象,以便可以同时对多个用户进行身份验证,或者每次进行一次身份验证并且只能登录一个用户?
认证对象的有效期是多久?在身份验证模块中创建 JWT 后,我应该“注销”/删除身份验证成功,还是在请求完成后它会自行处理?对于资源端点(不是身份验证端点),一旦我验证了 JWT,有没有办法在身份验证对象中设置身份验证成功?同样,一旦验证了 JWT,我可以在身份验证对象中设置角色吗?
我的代码基于此示例https://auth0.com/blog/securing-spring-boot-with-jwts/。我已将其拆分为不同的 JAR 以对 JWT 进行身份验证和验证(我正在资源端点中进行验证)。我还添加了 JDBC 身份验证,而不是内存身份验证。