2017-10-03 11 views
0

Keycloakを使用してユーザーを認証し、エクスプレスルートを保護したいと考えています。ログインルートでは、私はkeycloakに格納しているgrant managerからkeycloak-tokenを取得します。今、私が直接ログインするtempアカウントを使用していますについて:Keycloakグラントトークンがエクスプレスルートに維持されていません

... 
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は「keycloakトークン」プロパティを持っています。しかし、保護されたルートに移動しようとすると、

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

その後、そのreq.session [「keycloakトークン」]は消えていると私はまだKeycloakのログインページにリダイレクトしています。 私はそこにログインした後、私のトークンが設定されているように見えます。

ログインルートのグラントマネージャからのセッショントークンが、keycloak.protect()ルートプロテクタのものと同じように共有され、維持されないのはなぜですか?

答えて

0

あなたはKeycloakミドルウェアだけでなく

app.use(keycloak.middleware({ 
    logout: '/logout', 
    admin: '/' 
})); 
をインストールする必要があります
関連する問題