Экспресс-шлюз jwt return Неавторизованный

Я пытаюсь использовать jwt на экспресс-шлюзе. А вот из конфигурации gateway.config.yml это в соответствии с документацией. но это всегда возврат без авторизации. мой шлюз.config.yml:

http:
  port: 8080
apiEndpoints:
  crudAPI:
    host: localhost
    paths:
      - '/users/get-user-data'
      - '/users/delete-user-data'
      - '/users/add-user-data'
      - '/users/get-one-user-data/*'
      - '/users/update-user-data'
      - '/users/update-pass-user-data'
serviceEndpoints:
  crudService:
    url: 'http://localhost:3004'
policies:
  - proxy
  - log
  - jwt
pipelines:
  crud:
    apiEndpoints:
      - crudAPI
    policies:
      - log:
        - action:
            message: "header===> ${req.headers.authorization}"
      - jwt:
        - action:
            secretOrPublicKey: 'secretAuth'
            checkCredentialExistence: false
            # passThrough: true
      - proxy:
        - action:
            serviceEndpoint: crudService

если для passThrough установлено значение true, он работает правильно. что-то пошло не так?


person Andri Thomas    schedule 04.12.2019    source источник
comment
Эй, того, что вы здесь написали, недостаточно, чтобы дать какое-либо предложение/совет. Вам нужно будет хотя бы показать, как вы делаете запрос к шлюзу, а также как вы генерируете пользователя и приложение, с которым вы пытаетесь пройти аутентификацию!   -  person Vincenzo    schedule 04.12.2019
comment
извините, это мой запрос почтальону при проходе: false link_1 . А это мой запрос к почтальону при проходе: true link_2   -  person Andri Thomas    schedule 05.12.2019


Ответы (1)


Это хорошо работает в EG. В JWT была только ошибка, которую я допустил в бэкэнд-API. Спасибо, что нашли время, чтобы расследовать это дело. Я очень благодарен за сотрудничество с EG.

Мой внутренний API при аутентификации JWT:

// JSON WEB TOKEN STRATEGY
passport.use(new JwtStrategy({
    // jwtFromRequest: ExtractJwt.fromHeader('authorization'), // WRONG
    jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),  // CORRECT
    secretOrKey: config.JWT_SECRET
}, async (payload, done) => {
    try {
        // find user specified in token
        const user = await User.findById(payload.sub);

        // handle if user doesnt exist
        if(!user) {
            return done(null, false);
        }

        // return the user
        done(null, user);
    } catch (error) {
        done(error, false);
    }
}));
person Andri Thomas    schedule 05.12.2019
comment
Фантастически — рад видеть, что вы смогли заставить его работать. - person Vincenzo; 09.12.2019