具有UAA的JHipster微服务的具有自定义角色的AuthorizedFeignClient

时间:2019-07-12 16:45:50

标签: java spring-boot spring-security jhipster feign

我正在使用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存储库(请参见上面的链接)来重现该问题,如果有人可以给我提示我做错了事,将不胜感激。

0 个答案:

没有答案