Keycloak Node.js Connect:统一身份认证解决方案
const Keycloak = require('keycloak-connect');
const session = require('express-session');
const memoryStore = new session.MemoryStore();
const keycloak = new Keycloak({
store: memoryStore,
});
// 在Express应用中使用Keycloak中间件
app.use(session({
secret: 'your secret',
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 3600000, // 1 hour in milliseconds
},
}));
app.use(keycloak.middleware({
logout: '/logout',
admin: '/',
}));
// 保护特定路由
app.get('/protected', keycloak.protect(), (req, res) => {
res.json({
message: 'Hello, ' + req.kauth.grant.access_token.content.preferred_username,
});
});
// 处理登出请求
app.get('/logout', (req, res) => {
req.logout();
res.redirect('/');
});
这个代码实例展示了如何在Node.js的Express应用中集成Keycloak认证服务。首先,创建了Keycloak的实例,并配置了内存存储。然后,在Express应用中使用了session中间件和Keycloak提供的中间件。最后,通过keycloak.protect()
方法保护了一个路由,并提供了一个登出的路由处理函数。
评论已关闭