Не удается настроить Hyperledger Composer с многопользовательской аутентификацией - PullRequest
0 голосов
/ 28 сентября 2018

Я следую руководству Использование Google OAUTH2.0 с сервером REST (https://hyperledger.github.io/composer/latest/tutorials/google_oauth2_rest). После успешного входа в мою учетную запись Google я получаю эту ошибку в браузере:

{
  "error": {
    "statusCode": 500,
    "name": "InternalOAuthError",
    "message": "Failed to obtain access token",
    "oauthError": {
      "errno": "ENOTFOUND",
      "code": "ENOTFOUND",
      "syscall": "getaddrinfo",
      "hostname": "accounts.google.com",
      "host": "accounts.google.com",
      "port": 443
    },
    "stack": "InternalOAuthError: Failed to obtain access token\n    at Strategy.OAuth2Strategy._createOAuthError (/home/composer/node_modules/passport-oauth2/lib/strategy.js:379:17)\n    at /home/composer/node_modules/passport-oauth2/lib/strategy.js:166:45\n    at /home/composer/node_modules/oauth/lib/oauth2.js:191:18\n    at ClientRequest.<anonymous> (/home/composer/node_modules/oauth/lib/oauth2.js:162:5)\n    at emitOne (events.js:116:13)\n    at ClientRequest.emit (events.js:211:7)\n    at TLSSocket.socketErrorListener (_http_client.js:387:9)\n    at emitOne (events.js:116:13)\n    at TLSSocket.emit (events.js:211:7)\n    at emitErrorNT (internal/streams/destroy.js:66:8)\n    at args.(anonymous function) (/home/composer/.npm-global/lib/node_modules/pm2/node_modules/event-loop-inspector/index.js:138:29)\n    at _combinedTickCallback (internal/process/next_tick.js:139:11)\n    at process._tickDomainCallback (internal/process/next_tick.js:219:9)"
  }
}

Я за корпоративным прокси.Итак, я подозреваю, что это проблема, но я не уверен.

Следуя инструкциям руководства, я отредактировал файл Dockerfile для добавления конфигурации прокси-сервера npm (ip и порт с правильными данными):

ОТ сервера гиперссылки / composer-rest-RUN RUN Конфигурационный набор npm прокси http://ip:port && Конфигурационный набор npm https-proxy http://ip:port && \ npm install --production loopback-connector-mongodb passport-google-oauth2 запрос https-proxy-agent && \ npm очистка кэша --force && \ ln -s node_modules .node_modules

Кроме того, я добавил запрос и https-proxy-agent модулидля реализации обходного решения, поясняющего здесь: Используйте Passport.js за корпоративным брандмауэром для стратегии Facebook , но безуспешно.

Я построил сервер композиторов-отдыхающих с образами Docker следующим образом:

docker build -t myorg/composer-rest-server --build-arg http_proxy=http://ip:port --build-arg https_proxy=http://ip:port .

Когда я запустил контейнер Docker, это был журнал:

[2018-09-28T10: 48: 18.240Z] Журнал PM2: запуск в режиме без демона [2018-09-28T10: 48: 18.318Z] PM2 log: запуск последовательности выполнения в режиме -fork для имени приложения: идентификатор composer-rest-server: 0 [2018-09-28T10: 48: 18.325Z] Журнал PM2: имя приложения: идентификатор composer-rest-server: 0 онлайн ПРЕДУПРЕЖДЕНИЕ: Значение NODE_APP_INSTANCE, равное 0, не соответствует ни одному из имен файлов конфигурации экземпляра.ВНИМАНИЕ: См. https://github.com/lorenwest/node-config/wiki/Strict-Mode Обнаружение типов из определения бизнес-сети ... (узел: 15) DeprecationWarning: текущий анализатор строки URL устарел и будет удален в будущей версии.Чтобы использовать новый синтаксический анализатор, передайте опцию {useNewUrlParser: true} в MongoClient.connect.Обнаружение возвращаемых транзакций .. Обнаруженные типы из определения бизнес-сети Создание схем для всех типов в определении бизнес-сети ... Сгенерированные схемы для всех типов в определении бизнес-сети Добавление схем для всех типов в Loopback ... Добавлены схемы для всех типов в LoopbackВеб-сервер прослушивает: http://localhost:3000 Просмотрите API REST на http://localhost:3000/explorer

И после входа в мою учетную запись Google это был журнал:

Неизвестное ошибка запроса GET /auth/google/callback?code=4%2FbAC3w3UnnALN4kKQD8RdjfC_wrXJeFAojIHKOANISGWYn-zvIzTeO24P96T_SaJDhVBPcbdqrmLxUyv9IajeYrg&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.me+https%3A%2F%2Fwww.googleapis.com% 2Fauth% 2Fplus.profile.agerange.read + HTTPS% 3A% 2F% 2Fwww.googleapis.com% 2Fauth% 2Fplus.profile.language.read + HTTPS% 3A% 2F% 2Fwww.googleapis.com% 2Fauth% 2Fuserinfo.profile: InternalOAuthError: Не удалось получить токен доступа в Strategy.OAuth2Strategy._createOAuthError (/ home / composer / node_modules /passport-oauth2 / lib / strategy.js: 379: 17) в /home/composer/node_modules/passport-oauth2/lib/strategy.js:166:45 в /home/composer/node_modules/oauth/lib/oauth2.js: 191: 18 по требованию клиента.(/home/composer/node_modules/oauth/lib/oauth2.js:162:5) в emitOne (events.js: 116: 13) в ClientRequest.emit (events.js: 211: 7) в TLSSocket.socketErrorListener (_http_client.js: 387: 9) в emitOne (events.js: 116: 13) в TLSSocket.emit (events.js: 211: 7) в emitErrorNT (внутренний / streams / destroy.js: 66: 8) в аргументах. (анонимная функция) (/home/composer/.npm-global/lib/node_modules/pm2/node_modules/event-loop-inspector/index.js:138:29) в _combinedTickCallback (internal / process / next_tick.js: 139: 11) at process._tickDomainCallback (internal / process / next_tick.js: 219: 9)

И это переменная COMPOSER_PROVIDERS с правильными значениями clientID и clientSecret:

COMPOSER_PROVIDERS='{
"google": {
    "provider": "google",
    "module": "passport-google-oauth2",
    "clientID": "REPLACE_WITH_CLIENT_ID",
    "clientSecret": "REPLACE_WITH_CLIENT_SECRET",
    "authPath": "/auth/google",
    "callbackURL": "/auth/google/callback",
    "scope": "https://www.googleapis.com/auth/plus.login",
    "successRedirect": "/",
    "failureRedirect": "/"
}

Кто-нибудь может сказать мне, где проблема?

Спасибо.

PD: Извините за этот кирпич!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...