Keycloak v24.x能否添加仅支持OAuth2而非OIDC的身份提供商?
在Keycloak v24.x中配置仅支持OAuth2的身份提供商
可以实现,但默认通过well-known URL自动配置的身份提供商会强制携带OIDC的openid scope,这是导致你报错的核心原因。以下是具体解决步骤:
1. 手动创建身份提供商(不要使用well-known URL)
- 登录Keycloak控制台,进入目标Realm → 「身份提供商」→ 「添加提供商」,选择
OpenID Connect类型(Keycloak没有单独的纯OAuth2提供商类型,但可通过调整配置适配) - 填写核心配置项:
- 提供商ID:自定义标识(例如
oauth2-only-provider) - 提供商名称:登录界面显示的名称
- 授权端点:对方OAuth2服务的授权URL
- 令牌端点:对方OAuth2服务的令牌URL
- 客户端ID/客户端密钥:对方提供的应用凭证
- 用户信息端点:如果对方提供用户信息接口则填写,无则留空
- 提供商ID:自定义标识(例如
2. 移除默认的openid scope
在身份提供商的配置页面,找到「Scopes」字段,清空默认的openid值,替换为对方OAuth2支持的scope(例如profile、email或对方自定义的权限范围)
3. 配置用户属性映射(关键步骤)
由于对方不支持OIDC,没有id_token返回用户身份信息,需要从access_token或用户信息接口提取数据:
- 进入身份提供商的「Mappers」标签页:
- 如果对方的
access_token包含用户属性(如sub、name),添加「JSON Token」类型的映射器,指定从access_token的对应字段提取值,映射到Keycloak的用户属性(如username、email) - 如果填写了用户信息端点,确保开启「Use User Info」选项,添加「User Attribute」类型的映射器来获取用户数据
- 如果对方的
4. 测试登录流程
设置完成后,在登录界面选择该提供商,Keycloak会以纯OAuth2模式发起请求,不再携带openid scope,授权完成后会根据映射规则创建或关联Keycloak用户
错误原因说明
你遇到的报错:
{"error": "invalid_scope", "error_description": "The requested 'openid' scope is not valid."}
是因为通过well-known URL自动配置时,Keycloak默认会添加OIDC协议必需的openid scope,但对方仅支持纯OAuth2,无法识别该scope,因此返回错误。
内容的提问来源于stack exchange,提问作者Timothy Vogel
相关产品推荐
相关产品推荐

