You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 APIM 3.2配置:仅通过Keycloak OAuth2令牌访问API的方法

WSO2 APIM 3.2 仅用Keycloak令牌访问API的配置方案

问题原因

你遇到的900908错误是因为WSO2 APIM默认强制验证API的订阅关系——要求请求携带API密钥或WSO2颁发的令牌来确认调用方(应用)已订阅该API。而你当前使用的Keycloak令牌仅完成了用户身份认证,未关联WSO2的API订阅逻辑,因此被拦截。

配置步骤

要实现仅用Keycloak令牌访问API,需完成以下配置:

1. 将Keycloak配置为WSO2的身份提供者

在WSO2 APIM管理控制台中添加Keycloak作为OpenID Connect身份提供者:

  • 进入身份 > 身份提供者 > 添加,选择OpenID Connect类型
  • 配置Keycloak的客户端ID、客户端密钥,填写令牌端点(如https://<keycloak-domain>/auth/realms/<realm-name>/protocol/openid-connect/token)和用户信息端点
  • 启用启用OAuth2/OpenID Connect,保存配置后,确保WSO2能成功验证Keycloak令牌的签名和有效性

2. 修改API的安全策略

在API发布者控制台编辑目标API:

  • 切换到安全选项卡,将API的安全类型从默认的API Key或OAuth2改为OpenID Connect
  • 选择之前配置的Keycloak身份提供者作为验证源

3. 关闭API订阅验证

要跳过WSO2的订阅检查,需修改全局配置:
打开<APIM_HOME>/repository/conf/deployment.toml,添加以下配置:

[apim.devportal]
disable_subscription_validation = true

4. 配置API访问权限

在API发布者的策略选项卡中,设置API的访问权限为允许所有已认证用户,确保通过Keycloak认证的用户都能访问该API

5. 验证配置

重启WSO2 APIM服务后,用Angular应用携带Keycloak的access_token调用API,确认不再返回900908错误

方案合理性与最佳实践

合理性

如果你的场景是内部可信系统,无需按应用维度统计API调用、设置限流/配额,且所有终端用户都已通过Keycloak完成身份认证,该方案是可行的。

潜在风险

  • 跳过订阅验证后,WSO2无法跟踪API的应用级调用来源,无法实现应用维度的权限隔离、流量管控
  • 若Keycloak令牌泄露,攻击者可直接调用API,缺少应用层面的额外防护

最佳实践建议

  • 若需要保留应用管控能力,建议采用Keycloak令牌+API密钥的组合方案:将API安全类型设为OAuth2 + API Key,OAuth2身份提供者选Keycloak,同时验证用户身份和应用订阅
  • 若必须仅用用户令牌,建议在Keycloak中为不同Angular应用配置独立客户端,在WSO2中通过令牌的aud(受众)字段限制仅指定客户端的令牌可访问API,同时开启WSO2的用户权限细粒度控制

内容的提问来源于stack exchange,提问作者Mael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:13:35