我希望使用开源身份认证和访问管理系统Keycloak来保护我的路由。我尝试遵循其文档,但无法使其正常工作。以下是我的app.js文件:
服务器是在一个名为
这是我的
如何保护路由器:
const express = require( 'express' );
const routePlaces = require( './routes/placesRoutes' );
const Keycloak = require( 'keycloak-connect' );
const session = require( 'express-session' );
const memoryStrore = new session.MemoryStore();
let kcConfig = {
clientId = 'parking-app',
bearerOnly: true,
serverUrl: 'localhost:8080/auth',
realm: 'FlexParking',
reamlPublicKey: 'MIIBIjANBg…'
}
var keycloak = new KeyCloak( {store: memoryStore}, kcConfig );
app.use( keycloak.middleware({
// here I think I have to place my routes
}));
app.use( '/places, routePlaces );
module.exports = app;
服务器是在一个名为
server.js
的文件中创建的,在尝试使用Keycloak之前,所有端点都能正常工作。这是我的
routePlaces.js
文件:'use strict';
const express = require( 'express' );
const place = require( '../controllers/placesController' );
router.route( '/gps' ).get( place.get_place_by_gps );
router.route( '/street' ).get( place.get_place_by_street );
module.exports = router;
这是我的placesController.js
文件:
'use strict';
exports.get_place_by_gps = ( req, res, next ) => {
res.send( ' GET places by the GPS position' );
}
exports.get_place_by_street = ( req, res, next ) => {
res.send( ' GET places by the street name' );
}
我希望使用keycloak.connect('...')
来保护我的路由('/places/gps'),而路由'/places/street'则不需要任何保护。如何配置Keycloak中间件以实现此功能?
app.use( keycloak.middleware({
// here i think i have to place my routes
}));
如何保护路由器:
router.route( '/gps' ).get( place.get_place_by_gps, keycloak.connect('user'));