【发布时间】:2018-02-01 12:56:50
【问题描述】:
我有很多服务,我想通过身份验证服务集中我的身份验证。现在我是 Spring Boot 的新手,我不知道如何使这成为可能。
我只是从 Spring 中实现了正常的安全性,它工作得很好,我只找到了一些关于 jdbcAuthentication、inMemoryAuthentication 等的教程,但没有找到身份验证服务向另一个服务发送请求的身份验证。有人对此有所了解吗?
我基于令牌的安全性 -> JWT
我认为我需要操纵AuthenticationManagerBuilder,因为它决定了用户名是否有效。
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
}
我向 Feign 提出请求 - 可能是此代码的错误位置
@Override
public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) throws AuthenticationException, IOException, ServletException {
AccountCredentials credentials = new ObjectMapper()
.readValue(req.getInputStream(), AccountCredentials.class);
UserRequest userRequest = Feign.builder()
.decoder(new GsonDecoder())
.target(UserRequest.class,"http://localhost:7998/api/user-service/user/" + credentials.getUsername());
return getAuthenticationManager().authenticate(new UsernamePasswordAuthenticationToken(credentials.getUsername(),credentials.getPassword(),emptyList()));
}
【问题讨论】:
-
JWT 背后的理念是它们是无状态且自包含的。
-
是的,但要获得令牌,您需要验证用户名和密码。而且这些数据不属于我的身份验证服务。他应该总是问我的用户服务。之后,他归还了令牌
标签: java spring spring-security authorization microservices