> app.use(keycloak.middleware({
>
> // here i think i have to place my routes
>
> }));
Это неверно.Вы должны пройти туда options
.
app.use(keycloak.middleware({
logout: logoutUrl,
admin: '/'
}));
Каким должен быть мой маршрут, который я хочу защитить:
router.route ('/ gps').get (place.get_place_by_gps, keycloak.connect ('user'); что-то, как указано выше?
keycloak.middleware()
Сама не защищена. Просто пытается получить данные grant
иззапросите и поместите его в специальный объект request.kauth.grant
. Также он выполняет некоторые дополнительные действия, например, проверяет запрос на выход из системы.
Для защиты ресурса необходимо добавить keycloak.protect()
app.get('/gps', keycloak.protect(), handler);
Чтобы не защищать ресурс, просто ничего не добавляйте
app.get('/street', handler);
Это более сложный пример из keycloak-nodejs-example , он использует пользовательское промежуточное ПО
middleware(logoutUrl) {
// Return the Keycloak middleware.
//
// Specifies that the user-accessible application URL to
// logout should be mounted at /logout
//
// Specifies that Keycloak console callbacks should target the
// root URL. Various permutations, such as /k_logout will ultimately
// be appended to the admin URL.
let result = this.keyCloak.middleware({
logout: logoutUrl,
admin: '/'
});
result.push(this.createSecurityMiddleware());
return result;
}
createSecurityMiddleware() {
return (req, res, next) => {
if (this.permissions.isNotProtectedUrl(req)) {
return next();
}
const permission = this.permissions.findPermission(req);
if (!permission) {
console.log('Can not find a permission for: %s %s', req.method, req.originalUrl);
return this.keyCloak.accessDenied(req, res);
}
this.protectAndCheckPermission(req, res, next, permission.resource, permission.scope);
};
}
app.use(keyCloak.middleware('/logout'));
Источники
https://github.com/v-ladynev/keycloak-nodejs-example/blob/master/lib/keyCloakService.js#L69
https://github.com/v-ladynev/keycloak-nodejs-example/blob/master/app.js#L60
Также вы можете обратиться к более сложной схеме защиты, используя (ресурс, область действия) в keycloak-nodejs-пример