GluuFederation / gluu-passport

Gluu interface to Passport.js to support social login and inbound identity.
Apache License 2.0
6 stars 17 forks source link

Not able to authenticate when using cache provider #443

Open christian-hawk opened 2 years ago

christian-hawk commented 2 years ago

When trying to authenticate using a cache provider, we get a TypeError: this.cacheProvider.saveAsync is not a function error message.

2022-06-04 16:10:58.933+0000 [INFO]     Response received
2022-06-04 16:10:58.933+0000 [INFO]     Configuration data has been parsed
2022-06-04 16:10:58.933+0000 [DEBUG]    entered recreateHttpServer(serverURI=https://apitest.techno24x7.com,port=8090
2022-06-04 16:10:58.933+0000 [DEBUG]    httpPort = 8090
2022-06-04 16:11:01.400+0000 [VERBOSE]  Issuing token
2022-06-04 16:11:01.401+0000 [INFO]     159.223.101.115 - GET /passport/token HTTP/1.1 200 201 - 1.530 ms
2022-06-04 16:11:01.528+0000 [VERBOSE]  Validating token
2022-06-04 16:11:01.528+0000 [VERBOSE]  Authenticating request against samltest.id
2022-06-04 16:11:01.530+0000 [ERROR]    Error: TypeError: this.cacheProvider.saveAsync is not a function
2022-06-04 16:11:01.530+0000 [ERROR]    TypeError: this.cacheProvider.saveAsync is not a function
    at SAML.generateAuthorizeRequestAsync (/opt/gluu/node/passport/node_modules/passport-saml/lib/node-saml/saml.js:183:38)
    at SAML.getAuthorizeUrlAsync (/opt/gluu/node/passport/node_modules/passport-saml/lib/node-saml/saml.js:407:36)
    at login-request (/opt/gluu/node/passport/node_modules/passport-saml/lib/passport-saml/strategy.js:106:60)
    at Strategy.authenticate (/opt/gluu/node/passport/node_modules/passport-saml/lib/passport-saml/strategy.js:129:13)
    at attempt (/opt/gluu/node/passport/node_modules/passport/lib/middleware/authenticate.js:366:16)
    at authenticate (/opt/gluu/node/passport/node_modules/passport/lib/middleware/authenticate.js:367:7)
    at authenticateRequest (/opt/gluu/node/passport/server/routes.js:112:77)
    at Layer.handle [as handle_request] (/opt/gluu/node/passport/node_modules/express/lib/router/layer.js:95:5)
    at next (/opt/gluu/node/passport/node_modules/express/lib/router/route.js:137:13)
    at validateToken (/opt/gluu/node/passport/server/routes.js:140:5)
    at Layer.handle [as handle_request] (/opt/gluu/node/passport/node_modules/express/lib/router/layer.js:95:5)
    at next (/opt/gluu/node/passport/node_modules/express/lib/router/route.js:137:13)
    at validateProvider (/opt/gluu/node/passport/server/routes.js:103:5)
    at Layer.handle [as handle_request] (/opt/gluu/node/passport/node_modules/express/lib/router/layer.js:95:5)
    at next (/opt/gluu/node/passport/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/opt/gluu/node/passport/node_modules/express/lib/router/route.js:112:3)

This happens because we did not upgraded a badly documented breaking change from passport-saml module:

https://github.com/GluuFederation/gluu-passport/blob/65c6a2b420ff0d9da1574cc0635641fbed8efefa/server/cache-provider.js#L47-L76

It also looks like this scenario has not been tested.