Как включить применение политики в keycloak для приложения node.js? - PullRequest
0 голосов
/ 11 декабря 2018

Мне нужно интегрировать приложение node.js с keycloak. Приложение находится в экспрессе. Но политики не применяются. Он предоставляет всем пользователям разрешение на доступ ко всем API.Для / test api: Доступ имеют только пользователи с ролью «главный». Я дал эти политики в консоли администратора keycloak. Но они не отражают. Почему?

Пользователь без роли «главный» также имеет доступ кtest

app.js:

'use strict';

const Keycloak = require('keycloak-connect');
const express = require('express');
const session = require('express-session');
const expressHbs = require('express-handlebars');
const app = express();
app.engine('hbs', expressHbs({extname:'hbs',
 defaultLayout:'layout.hbs',
 relativeTo: __dirname}));
app.set('view engine', 'hbs');
var memoryStore = new session.MemoryStore();
var keycloak = new Keycloak({ store: memoryStore });
app.use(session({
 secret:'thisShouldBeLongAndSecret',
 resave: false,
 saveUninitialized: true,
 store: memoryStore
}));
app.use(keycloak.middleware()); 
app.get('/*', keycloak.protect('user'), function(req, res){
     res.send("User has base permission");
    });

app.get('/test', keycloak.protect(), function(req, res){
     res.send("access granted");
    });
app.get('/',function(req,res){
 res.send("hello world");
});
app.use( keycloak.middleware( { logout: '/'} ));
app.listen(3000, function () {
 console.log('Listening at http://localhost:3000');
});

keycloak.json:

{
  "realm": "nodejs-example",
  "auth-server-url": "http://localhost:8180/auth",
  "ssl-required": "external",
  "resource": "nodejs-connect",
  "credentials": {
    "secret": "451317a2-09a1-48b8-b036-e578051687dd"
  },
  "use-resource-role-mappings": true,
  "confidential-port": 0,
  "policy-enforcer": {
      "enforcement-mode":"PERMISSIVE",

  }
}

1 Ответ

0 голосов
/ 10 марта 2019

В вашем файле keycloak.json принудительный режим установлен на РАЗРЕШЕНИЕ, это должно быть ENCFORCE.

...