将“MicroService Gateway”与“UAA Server”连接到Jhipster 3.5.0

时间:2016-07-21 14:53:24

标签: jhipster microservices

我创建了一个UAA服务器:

1

我创建了一个Microservicio网关:

? (1/16) Which *type* of application would you like to create? [BETA] JHipster UAA server (for microservice OAuth2 authentication)
  • 我在“docker-compose”中创建了docker容器,并且创建得很好。
  • 我必须在网关上添加一些额外的配置才能使用服务器UAA吗?
  • 我在容器网关中收到以下错误跟踪:

    ? (1/16) Which *type* of application would you like to create? Microservice gateway ... ? (6/16) What is the folder path of your UAA application?. ../elseruaa

非常感谢你的帮助。

4 个答案:

答案 0 :(得分:2)

我创建了一个youtube截屏视频,展示了如何使用UAA创建jhipster(3.5.1)微服务。我相信您遇到的问题与服务启动的顺序有关,或者旧的服务没有使用3.5.0+代码重新生成。正如您在截屏视频和github上的源代码中看到的那样,它可以正常工作。

screencast

答案 1 :(得分:1)

我有同样的问题。花了几个小时后,最后通过在MicroserviceSecurityConfiguration.java中添加以下内容来修复错误:

注入org.springframework.cloud.client.discovery.DiscoveryClient

 @Inject
private DiscoveryClient discoveryClient;

在MicroserviceSecurityConfiguration.java的任何方法中(我选择getKeyFromAuthorizationServer方法),添加以下内容:

discoveryClient.getServices();

答案 2 :(得分:0)

RibbonLoadBalancerClient报告

Caused by: java.lang.IllegalStateException: No instances available for elseruaa

我无法获得我们的uaa支持,但似乎您的网关无法在已注册到您的JHipster注册表(Eureka服务器)的Eureka客户端列表中找到名为elseruaa的服务。所以要么你忘了启动elseruaa,要么注册了其他名字。

答案 3 :(得分:0)

更改您的MobileSecurityConfiguration

@Inject
private DiscoveryClient discoveryClient;

private String getKeyFromAuthorizationServer() {
          List<String> services = discoveryClient.getServices();

          HttpEntity<Void> request = new HttpEntity<Void>(new HttpHeaders());
          String value = (String) this.keyUriRestTemplate
              .exchange("http://uaa/oauth/token_key", HttpMethod.GET, request, Map.class).getBody()
              .get("value");

          return value;
      }

所以基本上只有一行:

List<String> services = discoveryClient.getServices();

解决了这个问题。