express-gateway

Express Gateway - Proxy request with Bearer Token


I am trying to figure out how to get Express Gateway to use the Auth Bearer token in request, upstream to the api service.

Below is my config as of right now.

http:
  port: 8080
admin:
  port: 9876
  host: localhost
apiEndpoints:
  api:
    host: localhost
    paths:
      - '/truck-api/*'
      - '/car-api/*'
serviceEndpoints:
  truck-service:
    url: 'http://10.0.0.2:5010/api'
  car-service:
    url: 'http://10.0.0.2:5011/api'
policies:
  - basic-auth
  - cors
  - expression
  - key-auth
  - log
  - oauth2
  - proxy
  - rate-limit
  - rewrite
  - request-transformer
pipelines:
  default:
    apiEndpoints:
      - api
    policies:
      - proxy:
          -
            condition:
              name: pathMatch
              pattern: "^/truck-api/(.*)"
            action:
              serviceEndpoint: truck-service
              prependPath: true
              ignorePath: false
              stripPath: true
              changeOrigin: true
          -
            condition:
              name: pathMatch
              pattern: "^/car-api/(.*)"
            action:
              serviceEndpoint: car-service
              prependPath: true
              ignorePath: false
              stripPath: true
              changeOrigin: true

The frontend calls express gateway with a proper auth bearer token, however the express gateway doesn't forward that auth bearer token on to the upstream service.

Advice?


Solution

  • After some digging and a lot of trial and error the solution was relatively simple, use request transformer.

    added this to the policies section:

          - request-transformer:        
            - action:
                headers:
                  remove: ['Authorization']
                  add: 
                    Authorization: "'Bearer ***'"