我有一个运行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仔细检查生成的承载令牌,该令牌表明它是正确的。
有帮助吗?
谢谢
答案 0 :(得分:2)
只需为陷入困境的人们回答这个问题:
keycloak.protect(“”);是问题所在,因为它正在寻找一个名为“”的角色,但显然找不到。因此它给了我403。
如果您希望对用户进行身份验证,但不要求他具有任何角色,请使用不带参数的keycloak.protect()。
答案 1 :(得分:1)
您需要添加Keycloak中间件
app.use(keycloak.middleware({
logout: logoutUrl,
admin: '/'
}));