智威汤逊和Spring Security
我已经使用Spring Boot和Spring Security进行了REST服务来进行身份验证。我对Spring Boot和Spring Security都很陌生。我在一个JAR文件中创建了一个验证模块。前端客户端向认证模块发送带有用户名和密码的请求。验证模块然后根据数据库验证用户的详细信息。如果身份验证成功,则会创建JWT,然后将其发送回客户端。用户名和角色被编入JWT。 JWT随后用于验证用户何时从其他REST服务端点请求资源,这些端点是在单独的JAR文件中构建的。有几件事我不确定。智威汤逊和Spring Security
在Spring Security是没有为每个用户创建一个认证对象,以便多个用户可以在同一时间进行身份验证,或者一个认证,每次做,只有一个用户可以登录?
多久是有效的认证对象?在认证模块中创建JWT时,我应该“注销”/删除认证成功吗?还是在请求完成后自行处理?对于资源端点(不是身份验证端点),是否有一种方法可以在验证JWT后在身份验证对象中设置身份验证成功?同样,一旦JWT验证,我可以在验证对象中设置角色吗?
我根据这个例子https://auth0.com/blog/securing-spring-boot-with-jwts/我的代码。我已经将它分成了不同的JAR,用于验证和验证JWT(我正在资源端点进行验证)。我还添加了JDBC认证,而不是内存认证。
在Spring Security是有每个 用户创建一个认证对象,以便多个用户可以在同一时间进行身份验证或者是 一个验证,每次做,只有一个用户可以登录?
当然,多个用户可以在同一时间进行身份验证!
多久是有效的认证对象?我应该 “注销” /删除认证成功时,JWT一直认证模块中创建 或当请求完成后,将照顾它本身 ?
你写你的服务是休息的,如果你想保持“清教徒”放心,你应该配置的认证是无国籍,这意味着,当请求已被处理的对象Authentication
被删除。这不会影响JWT令牌的有效性,如果您愿意,可以设置JWT令牌的过期时间。
如何使REST无状态的“Java配置”:
@Configuration
public static class RestHttpConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity http) throws Exception
{
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
// and the rest of security config after this
对于资源的端点(未验证端点)是有 办法设置身份验证成功的认证对象 一次我已经验证了智威汤逊?同样,我可以在JWT验证后在 认证对象中设置角色吗?
我使用类似下面代码后验证令牌的:
Collection<? extends GrantedAuthority> authorities = Collections.singleton(new SimpleGrantedAuthority("ROLE_JWT"));
Authentication authentication = new PreAuthenticatedAuthenticationToken(subject, token, authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
通过与至少一个角色(授权)构造认证对象时,它被标记为“成功”(认证)。
令牌过期,会话到期,撤消令牌......您可能会发现,仅仅使用传统饼干就像在这个Spring博客中提倡的那样简单。 https://spring.io/blog/2015/01/12/the-login-page-angular-js-and-spring-security-part-ii#help-how-is-my-application-going-to-规模。另外http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/ –