我已经使用Sping Boot 和Spring Security构建了一个REST服务来进行身份验证。我对Spring Boot和Spring Security都很陌生。我已经在一个JAR文件中创建了一个身份验证模块。前端客户端向身份验证模块发送一个带有用户名和密码的请求。身份验证模块然后根据DB验证用户的详细信息。如果验证成功,则创建JWT并将其发送回客户端。用户名和角色被编码到JWT中。然后,当从构建在单独JAR文件中的其他REST服务端点请求资源时,使用JWT来验证用户。有几件事我不太确定。
在SpringSecurity中,是否为每个用户创建了一个身份验证对象,以便可以同时对多个用户进行身份验证,或者是每次进行一次身份验证,但只能有一个用户登录?
身份验证对象的有效期有多长?在身份验证模块中创建JWT后,我应该成功“注销”/删除身份验证,还是在请求完成后由它自己处理?对于资源端点(而不是身份验证端点)验证JWT后,是否有方法在身份验证对象中设置身份验证成功?同样,在验证JWT之后,我是否可以在身份验证对象中设置角色?
我的代码基于这个示例https://auth0.com/blog/securing-spring-boot-with-jwts/。我将其拆分为不同的JAR,用于JWT的身份验证和验证(我在资源端点中进行验证)。我还添加了JDBC身份验证,而不是内存身份验证。
1条答案
按热度按时间yqyhoc1h1#
在SpringSecurity中,是否为每个用户创建了一个身份验证对象,以便可以同时对多个用户进行身份验证,或者是每次进行一次身份验证,但只能有一个用户登录?
当然可以同时验证多个用户!
验证对象的有效期有多长?当JWT在验证模块中创建后,我应该成功“注销”/删除验证,还是在请求完成后由它自己处理?
您将服务编写为REST,如果您希望保持“清教徒”REST,则应将身份验证配置为无状态,这意味着在处理请求时将删除
Authentication
对象。这不会影响JWT标记的有效性,如果需要,您可以设置JWT标记的过期时间。如何使用“Java config”使REST无状态:
对于资源端点(而不是身份验证端点),是否有一种方法可以在验证JWT后在身份验证对象中设置身份验证成功?类似地,是否可以在验证JWT后在身份验证对象中设置角色?
通过使用至少一个角色(授权)构造身份验证对象,它被标记为“成功”(已验证)。