我正在使用JHipster 6.1.0生成的一些微服务,这些微服务使用JHipster UAA服务器进行身份验证。
该项目包含以下微服务:
我正在尝试使用AuthorizedFeignClient执行从publicMicroservice到受限Microservice的请求。
当我将SecurityConfiguration留在.antMatchers("/api/**").authenticated()
这样的受限微服务中时,此操作可以预期
并在publicMicroservice的application-dev.yml中使用默认的client-id和client-secret
security:
client-authorization:
access-token-uri: http://uaa/oauth/token
token-service-id: uaa
client-id: internal
client-secret: internal
但是,我希望publicMicroservice以具有自定义角色ROLE_MYMICROSERVICE
的自定义用户身份进行身份验证,因为仅使用.authenticated()
还允许常规登录用户访问受限Microservice的资源。
因此,我创建了一个新用户“ mymicroservice”,其密码哈希与管理员用户相同,并且在UAA .csv文件中具有自定义角色。 我将publicMicroservice的application-dev.yml更改如下:
security:
client-authorization:
access-token-uri: http://uaa/oauth/token
token-service-id: uaa
client-id: mymicroservice
client-secret: admin
和受限微服务中的SecurityConfiguration像这样:
// .antMatchers("/api/**").authenticated()
.antMatchers("/api/**").hasAuthority("ROLE_MYMICROSERVICE")
现在,UAA服务器中的身份验证显然失败了,该服务器声称凭据不正确。
2019-07-12 17:39:17.638 DEBUG 29485 --- [ XNIO-1 task-56] c.m.myapp.aop.logging.LoggingAspect : Enter: com.mycompany.myapp.repository.CustomAuditEventRepository.add() with argument[s] = [AuditEvent [timestamp=2019-07-12T15:39:17.638Z, principal=mymicroservice, type=AUTHENTICATION_FAILURE, data={details=org.springframework.security.web.authentication.WebAuthenticationDetails@ffffa64e: RemoteIpAddress: 192.168.1.111; SessionId: null, type=org.springframework.security.authentication.BadCredentialsException, message=Bad credentials}]]
我确保凭据可以在网关webApp中使用,以便可以排除错别字。由于JHipster documentation并未详细说明如何使用client-id和client-secret,因此我现在很困惑,也不知道如何解决该问题。
我创建了Github存储库(请参见上面的链接)来重现该问题,如果有人可以给我提示我做错了事,将不胜感激。