更新:NodeJS – connect-keycloak中间件空响应错误

我在使用带有NodeJS的connect-keycloak中间件的时候遇到了一个问题,而且使用它的人似乎只有很less的文档。 这是基于在这里find的官方文档'A Full Example': http : //keycloak.github.io/keycloak-nodejs/connect/

使用curl进行testing时,出现了一个意外的错误,涉及到未定义的“keycloak-token”。 在我的代码或源代码中找不到任何对此的引用,也没有任何人在网上遇到同样的问题。 任何人都可以看到我做错了什么?

connect-keycloak对象包含并按预期方式实例化:

// app.js: // module dependencies var request = require('sync-request'); var fs = require('fs'); var restify = require('restify'); var Keycloak = require('connect-keycloak'); var session = require('express-session'); var memoryStore = new session.MemoryStore(); // Keycloak var keycloak = new Keycloak({ store: memoryStore }); 

并使用中间件:

 var server = restify.createServer({ name: 'name', version: '1.0.0' }); server.use(restify.acceptParser(server.acceptable)); server.use(restify.queryParser()); server.use(restify.bodyParser()); server.use(keycloak.middleware({ logout: '/logout', admin: '/' })); server.use(session({ secret: 'secret', resave: false, saveUninitialized: true, store: memoryStore })); 

keycloak.protect方法就位:

 server.get(/.*/, keycloak.protect(), restify.serveStatic({ 'directory': './html', 'default': 'index.html' })); 

然而,这个curltesting:

 curl -H "Content-Type: application/json" -X POST -d '{"query":"test"}' http://localhost:3000/trust-me-on-the-url-being-correct/thanks -i 

产生这个不寻常的错误(不是我所希望的错误):

  POST -d '{"query":"car"}' http://localhost:3000/rest/keywords -i HTTP/1.1 500 Internal Server Error Content-Type: application/json Content-Length: 87 Date: Thu, 03 Dec 2015 02:05:40 GMT Connection: keep-alive {"code":"InternalError","message":"Cannot read property 'keycloak-token' of undefined"}[addamnilemartin@localhost keyword]$ 

Keycloak.json与app.js包含在同一个目录中,绝对不应该是问题的原因。

有任何想法吗? 谢谢。

更新:

我意识到这是失踪,并添加它:

 // set session for keycloak server.use(session({ secret: 'fsd78d7gdfgds', resave: false, saveUninitialized: true, store: memoryStore })); 

现在响应当我的POST有keycloak.protect()的错误是:

 curl -H "Content-Type: application/json" -X POST -d '{"query":"car"}' http://localhost:3000/blah/blah -i curl: (52) Empty reply from server 

没有keycloak.protect的反应是预期的JSON,当然,因为没有尝试authentication。

有什么想法吗? 再次感谢。

事实certificate,这个代码没有错。 问题是我通过npm安装的节点模块已经过时了,直到这个中间件支持仅承载者validation之前。

这个故事的道德:让你的存储库保持最新