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()。
我有一个 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()。