Nuxeo 10.10如何与Keycloak对接实现API令牌身份认证
Nuxeo 10.10 与 Keycloak 对接操作指引
前置校验
- 确认Keycloak版本为7.x~12.x区间,更高版本的JWT协议、签名规则与Nuxeo 10.10原生模块不兼容
- 执行命令
nuxeoctl mp-list | grep oauth2确认Nuxeo原生nuxeo-platform-oauth2模块已启用,无需额外安装第三方Github对接插件,避免兼容性冲突 - 若之前已安装过第三方Keycloak对接插件,先执行
nuxeoctl mp-uninstall <插件包名>卸载后再进行后续操作
Keycloak端配置
- 进入对应领域,新建OpenID Connect类型客户端,自定义客户端ID,访问类型设为
confidential,有效重定向URI填写Nuxeo域名加后缀/nuxeo/oauth2Callback,仅做API调用场景可关闭标准流启用,开启服务帐户启用、直接访问授权启用 - 进入客户端「高级」→「签名和加密」页,设置访问令牌签名算法为
RS256 - 进入客户端「角色」页,新建对应Nuxeo权限的角色(如
nuxeo_user、nuxeo_admin),并给需要调用API的用户绑定对应角色 - 进入「客户端作用域」,新建自定义作用域
nuxeo_scope,添加用户角色映射器,令牌声明名称设为roles,勾选添加到访问令牌选项 - 进入「领域设置」→「密钥」页,复制RS256算法对应的公钥,留待Nuxeo配置使用
Nuxeo端配置
- 编辑Nuxeo根目录下的配置文件
conf/nuxeo.conf,添加以下配置项:
nuxeo.oauth2.enabled=true nuxeo.oauth2.jwt.issuer=https://<你的Keycloak域名>/auth/realms/<你的领域名> nuxeo.oauth2.jwt.audience=<你新建的Keycloak客户端ID> nuxeo.oauth2.jwt.publicKey=<你复制的Keycloak RS256公钥> nuxeo.oauth2.jwt.usernameClaim=preferred_username nuxeo.oauth2.jwt.groupsClaim=roles
- 执行命令
systemctl restart nuxeo重启Nuxeo服务生效
功能验证
- 调用Keycloak接口获取访问令牌:
curl -X POST 'https://<Keycloak域名>/auth/realms/<领域名>/protocol/openid-connect/token' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'grant_type=password&client_id=<客户端ID>&client_secret=<客户端密钥>&username=<测试用户名>&password=<测试用户密码>'
- 用返回的access_token调用Nuxeo API校验权限:
curl 'https://<Nuxeo域名>/nuxeo/api/v1/path/' \ -H 'Authorization: Bearer <你获取到的access_token>'
正常返回资源目录结构即代表对接成功。
内容的提问来源于stack exchange,提问作者Hannes Pries
相关产品推荐
相关产品推荐

