2017-10-03 18 views
0

Je souhaite utiliser Keycloak pour authentifier les utilisateurs et protéger mes itinéraires express. Pour la route de connexion, je récupère un keycloak-token du gestionnaire de subvention que je stocke dans keycloak. Pour l'instant je suis sur un temp compte pour vous connecter directement: Après avoir fait cela,Jeton d'autorisation Keycloak non maintenu dans les routes express

... 
let memoryStore = session.MemoryStore; 
let kcConfig = {...}; 
let keycloak = new Keycloak({ store : memoryStore }, kcConfig); 

/* Route */ 
app.get('/login', function (req, res) { 
    keycloak.grantManager.obtainDirectly('temp', 'temp').then(grant => { 
     keycloak.storeGrant(grant, req, res); 
    }, error => { 
     console.log("ERROR"); 
    }); 

    // Send some default info back 
    res.send({user: "me", token: "nnn"}); 
    res.end(); 
}); 

req.session a une propriété 'keycloak-jeton'. Cependant, lorsque j'essaie alors de naviguer vers des routes protégées, par ex.

app.use('/app', keycloak.protect(), app); 

Alors que req.session [ 'keycloak-token'] est parti et je suis toujours redirigés vers la page de connexion Keycloak. Après Je m'y connecte, PUIS mon jeton semble être réglé et je peux accéder aux routes protégées comme je le souhaite.

Pourquoi le jeton de session du gestionnaire de licences de la route de connexion n'est-il pas partagé et maintenu comme celui du protecteur d'itinéraire keycloak.protect()?

Répondre

0

Vous devez installer le middleware Keycloak ainsi

app.use(keycloak.middleware({ 
    logout: '/logout', 
    admin: '/' 
}));