我使用Spring Boot构建了3个微服务:
1)身份验证服务-创建JWT。
2和3-做某事的微服务(REST API)。
理论上,用户可以访问微服务2和3,而无需微服务1创建的令牌。
让我们说我正在将令牌传递给微服务2和3-如何验证令牌的完整性?微服务2和3是否需要与微服务1通信?
如果有人有一个很好的榜样,那就太好了。
答案 0 :(得分:0)
1. /authenticate --> Auth Service - Creates JWT.
2. /public/profile --> can be accessed without JWT Token
3. /public/resource --> can be accessed without JWT Token
4. /private/users --> can be accessed with JWT Token
请考虑您的应用程序的上述端点。在这里
/**/public/**
可以供所有人使用,与JWT令牌无关
是否存在/**/private/**
令牌。如果没有令牌,它将以401/403响应
(未经授权/禁止)现在进入编码部分。您必须创建一个扩展WebSecurityConfig
的{{1}}类,以覆盖WebSecurityConfigurerAdapter
configure(HttpSecurity http)
如果要对所有请求进行身份验证,请将.anyRequest()。permitAll()更改为.anyRequest()。authenticated()。
您还可以添加不想配置Spring Security筛选器链的端点以配置(WebSecurity web)。
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.cors().disable()
.authorizeRequests()
.antMatchers("/authenticate").permitAll()
.antMatchers("/**/private/**").authenticated()
.anyRequest().permitAll()
.and()
.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class)
.exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint);
}
}