Keycloak nodeJS总是得到403

时间:2018-12-14 07:01:56

标签: node.js json keycloak

我有一个运行NodeJS的应用程序,该应用程序的ID很喜欢用密钥斗篷保护。

我已经做了所有其他事情,就像在其他受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: logoutUrl,
    admin: '/'
}));

使用JWT.IO仔细检查生成的承载令牌,该令牌表明它是正确的。

有帮助吗?

谢谢

2 个答案:

答案 0 :(得分:2)

只需为陷入困境的人们回答这个问题:

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

如果您希望对用户进行身份验证,但不要求他具有任何角色,请使用不带参数的keycloak.protect()。

答案 1 :(得分:1)

您需要添加Keycloak中间件

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

https://stackoverflow.com/a/53705242/3405171