Keycloak nodeJS 总是得到 403

Keycloak nodeJS always get 403

我有一个 NodeJS 应用程序 运行,我想用 keycloak 来保护它。

我已经完成了与其他受 KeyCloak(角色、范围)保护的应用程序一样的所有操作,但它就是不想工作。

我的 config.json :

{
 "realm": "<Realm>",
 "bearer-only": true,
 "auth-server-url": "https://<URL>/auth",
 "ssl-required": "external",
 "resource": "<serviceName>",
 "use-resource-role-mappings": true,
 "confidential-port": 0
}

然后我这样设置:

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

然后在路线上:

keycloak.protect('')

我在开头也加了这个:

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

生成的不记名令牌经过 JWT.IO 双重检查,表明它是正确的..

有什么帮助吗?

谢谢

您需要添加Keycloak中间件

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

要保护资源,您需要将 keycloak.protect() 添加到路由

app.get('/gps', keycloak.protect(), handler);

不保护资源只是不添加任何东西

app.get('/street', handler);

只是为卡在同一点的人回答这个问题:

keycloak.protect("");是问题所在,因为它搜索了一个名为“”的角色,但显然找不到。因此它给了我一个 403.

如果您希望用户通过身份验证,但他不需要任何角色,请使用不带参数的 keycloak.protect()。