2016-08-23 78 views
5

如果流程不包含基本授权,我可以击中服务。Zuul - >尤里卡服务器,基本身份验证问题

如果我使用基本验证,它会抛出“消息”:“全认证才能访问该资源”

下面是我的意见:

在ZuulFilter,run()方法,我得到的值对于 request.getHeader( “授权”) - >基本c29tOnNvbzz ==

但一旦它到达微服务,我得到的值是 '空', request.getHeader( “授权”) - > null

使用Spring引导版本:1.4.0.RELEASE

This is my flow: 
------------------ 

Zuul -> Service Discovery (Eureka Server) -> Service 

请帮助,不知道在哪里的授权头消失。

Eureka Server yml file: 
------------------------- 
server.port:4001 
eureka.instance.hostname=localhost 
eureka.client.fetch-registry:false 
eureka.client.register-with-eureka:false 
eureka.client.serviceUrl.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 
eureka.client.healthcheck.enabled=true 

Zuul yml file: 
----------------- 
server: 
    port: 8765 
info: 
    component: Edge Server 
eureka: 
    instance: 
    leaseRenewalIntervalInSeconds: 3 
    metadataMap: 
     instanceId: ${spring.application.name}:${random.value} 
    client: 
    # Default values comes from org.springframework.cloud.netflix.eurek.EurekaClientConfigBean 
    registryFetchIntervalSeconds: 5 
    instanceInfoReplicationIntervalSeconds: 5 
    initialInstanceInfoReplicationIntervalSeconds: 5 

endpoints: 
    restart: 
    enabled: true 
    shutdown: 
    enabled: true 
    health: 
    sensitive: false 

zuul.sensitive-headers: Cookie,Set-Cookie,Authorization 

logging: 
    level: 
    ROOT: WARN 
    se.callista: INFO 

    # Get info regarding connection to the cofig server and retries if required 
    org.springframework.cloud.config.client.ConfigServicePropertySourceLocator: INFO 
    org.springframework.retry.support.RetryTemplate: DEBUG 

    # Set INFO to see the allocated port 
    org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer: INFO 
--- 
eureka: 
    instance: 
    preferIpAddress: true 
    client: 
    serviceUrl: 
     defaultZone: http://localhost:4001/eureka,http://localhost:4002/eureka 

回答

0

这解决了我的问题,但这是我们唯一的解决方案吗?

ctx.addZuulRequestHeader( “授权”,request.getHeader( “授权”))