EcrituresNumeriques / stylo

Stylo est un éditeur de textes pour articles scientifiques en sciences humaines et sociales.
https://stylo.huma-num.fr
GNU General Public License v3.0
48 stars 13 forks source link

Le débug OAuth2 cause un crash applicatif #398

Closed thom4parisot closed 3 years ago

thom4parisot commented 3 years ago
GET /login/openid - req.headers.referer: https://stylo.huma-num.fr/books
/authorization-code/callback - callback InternalOAuthError: failed to obtain access token
    at /usr/src/app/node_modules/passport-openidconnect/lib/strategy.js:93:38
    at /usr/src/app/node_modules/oauth/lib/oauth2.js:191:18
    at passBackControl (/usr/src/app/node_modules/oauth/lib/oauth2.js:132:9)
    at IncomingMessage.<anonymous> (/usr/src/app/node_modules/oauth/lib/oauth2.js:157:7)
    at IncomingMessage.emit (events.js:326:22)
    at endReadableNT (_stream_readable.js:1252:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  oauthError: {
    statusCode: 400,
    data: '<html><head><title>Bad request</title>\n' +
      '<style>\n' +
      'body{background:#000;color:#fff;padding:10px 50px;font-family:sans-serif;}a{text-decoration:none;color:#fff;}h1{text-align:center;}\n' +
      '</style>\n' +
      '</head>\n' +
      '<body>\n' +
      '<h1>Bad request</h1>\n' +
      '<p>invalid_request</p>\n' +
      '<center><a href="https://lemonldap-ng.org">LemonLDAP::NG</a></center>\n' +
      '</body>\n' +
      '</html>'
  }
} undefined undefined
/usr/src/app/app.js:239
        console.error('Unable to authenticate', info.message)
                                                     ^

TypeError: Cannot read property 'message' of undefined
    at /usr/src/app/app.js:239:54
    at Strategy.strategy.error (/usr/src/app/node_modules/passport/lib/middleware/authenticate.js:358:18)
    at /usr/src/app/node_modules/passport-openidconnect/lib/strategy.js:93:32
    at /usr/src/app/node_modules/oauth/lib/oauth2.js:191:18
    at passBackControl (/usr/src/app/node_modules/oauth/lib/oauth2.js:132:9)
    at IncomingMessage.<anonymous> (/usr/src/app/node_modules/oauth/lib/oauth2.js:157:7)
    at IncomingMessage.emit (events.js:326:22)
    at endReadableNT (_stream_readable.js:1252:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! graphql-stylo@0.1.0 prod: `NODE_ENV=production node --heapsnapshot-signal=SIGUSR2 app.js`
npm ERR! Exit status 1
ggrossetie commented 3 years ago

Même sans cette ligne de debug, on aurait quand même un crash à la ligne suivante:

https://github.com/EcrituresNumeriques/stylo/blob/b38da7013ce2183612429f08627c183ce6147cde/graphql/app.js#L239-L240

Apparemment dans ce cas on a une erreur. Je suppose qu'il faut revoir un peu la logique pour utiliser soit le message, soit l'erreur quand l'authentification OAuth ne renvoie pas de user.