2016-08-23 15 views
5

フローに基本認証が含まれていない場合は、サービスにアクセスできます。私は基本認証を使用する場合はZuul - > Eureka Server、基本認証の問題

、それは「メッセージ」をスロー:「フル認証がこのリソースにアクセスするために必要とされる」以下

は私の観察です:

ZuulFilter、run()メソッドでは、私は値を取得します>基本的なc29tOnNvbzzの==

が、それはマイクロサービスに達すると、私は 'NULL'、 request.getHeader( "認可")として値を取得しています - - > request.getHeader( "認可")についてnull

使用して春のブートバージョン:1.4.0.RELEASE

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

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

は親切にAuthorizationヘッダーが消えている場所がわからない、助けます。

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 

答えて

6

認証がデフォルトで敏感なヘッダで、これはZuulがそれらを転送しないことを意味します。それを機密ヘッダーの外に残すと、Zuulはヘッダーを転送します。

zuul.sensitiveHeaders: Cookie,Set-Cookie 

ハイフネーションではなく、キャメルケースである必要があります。

追加情報:https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#cookies-and-sensitive-headers

0

これは私の問題を解決しましたが、これが唯一の解決策ですか?

ctx.addZuulRequestHeader( "認可"、request.getHeader( "認可"))