【已解决】网关配置文件中对注册中心密码进行加密配置ENC(),无法连接注册中心

项目名称:KOCA
KOCA版本 :5.2.0
KOCA模块 :网关
模块版本 :5.2.0
场景 :eureka开启了认证,网关想对认证的密码进行密文配置
问题 :无法连接注册中心
报错细节 :

网关配置:

eureka:
  instance:
    prefer-ip-address: true
    status-page-url-path: ${management.endpoints.web.base-path}/info
    health-check-url-path: ${management.endpoints.web.base-path}/health
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    metadata-map:
      management.context-path: ${management.endpoints.web.base-path}
  client:
    service-url:
      defaultZone: http://user:ENC(zYyoF7424UE=)@localhost:8085/eureka/

启动报错:

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59)
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56)
	at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:876)
	at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121)
	at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:101)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

尝试解决方案:

第一步:把密码改成明文测试:发现能成功连接注册中心

eureka:
  instance:
    prefer-ip-address: true
    status-page-url-path: ${management.endpoints.web.base-path}/info
    health-check-url-path: ${management.endpoints.web.base-path}/health
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    metadata-map:
      management.context-path: ${management.endpoints.web.base-path}
  client:
    service-url:
      defaultZone: http://user:123456@localhost:8085/eureka/

说明网关启动时
http://user:ENC(zYyoF7424UE=)@localhost:8085/eureka/
解密不成功。

第二步:加密依赖检查,发现网关没有引入下面的依赖

<dependency>
      <groupId>com.szkingdom.koca.base</groupId>
      <artifactId>koca-crypto</artifactId>
</dependency>

第三步:断点调试:


必须要以ENC(开始,)结束才有才能正常解析。

第四步:采用如下方式,问题解决

test:
  des: ENC(zYyoF7424UE=)
eureka:
  instance:
    prefer-ip-address: true
    status-page-url-path: ${management.endpoints.web.base-path}/info
    health-check-url-path: ${management.endpoints.web.base-path}/health
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    metadata-map:
      management.context-path: ${management.endpoints.web.base-path}
  client:
    service-url:
      defaultZone: http://user:${test.des}@localhost:8085/eureka/

第五步:如果是在网关启动依然启动报错

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59)
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56)
	at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:876)
	at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121)
	at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:101)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

说明解密还是失败,需要添加依赖

        <dependency>
            <groupId>com.szkingdom.koca.boot</groupId>
            <artifactId>koca-boot-autoconfigure</artifactId>
        </dependency>

加解密的装配类在这个包下面

第六步:成功解决