WSO2 AM 4.1.0集成外部JWT遇900908资源禁止问题求助
WSO2 AM 4.1.0 集成外部OAuth提供商解决900908资源禁止错误
1. 先把JWT验证的基础配置搞对
打开WSO2容器内的repository/conf/deployment.toml,确认以下配置准确:
[apim.jwt] enable = true issuer = "<外部OAuth提供商的issuer值,需和JWT里的iss声明完全一致>" jwks_url = "<外部提供商的JWKS端点URL>" validate_expiry = true # 若不用JWKS,改用本地公钥的话,替换jwks_url为: # public_key_path = "<容器内的公钥文件路径,比如/home/wso2carbon/public.key>"
注意issuer必须和外部JWT里的iss字段完全匹配,大小写都不能出错。
2. 在管理控制台添加外部身份提供商(IDP)
- 登录WSO2 AM的Carbon控制台(
https://<你的AM域名>:9443/carbon) - 左侧菜单选择Identity > Identity Providers > Add
- 填写基本信息:
- Identity Provider Name:自定义一个易记的名称,比如
External_OAuth - Issuer:填入外部OAuth提供商的issuer值(和上面配置的保持一致)
- Identity Provider Name:自定义一个易记的名称,比如
- 展开Inbound Authentication Configuration > OAuth2/OpenID Connect Configuration,点击Configure:
- 勾选Enable OAuth2/OpenID Connect
- 填入Client ID(即你的SPA在外部OAuth提供商注册的客户端ID,若不需要WSO2与外部提供商交互可留空,但建议填上)
- 填入JWKS Endpoint:外部提供商的JWKS地址
- 保存配置
3. 绑定API与外部IDP
- 登录API Publisher,打开目标API
- 切换到Settings > Security标签页
- 在OAuth2 Security板块下,点击Add OAuth2/OpenID Connect Identity Provider
- 选择刚才创建的外部IDP,点击Add,之后保存API并重新发布
4. 让应用关联外部IDP
- 登录开发者门户,打开你的应用
- 切换到Credentials标签页
- 在OAuth2/OpenID Connect Configuration板块下,点击Add Identity Provider
- 选择创建的外部IDP并保存,同时确保该应用已订阅目标API
5. 检查JWT的aud声明
外部JWT的aud(受众)声明必须包含以下任一值:
- API的上下文+版本,比如
/my-api/v1 - 开发者门户中该应用的Client ID
若临时不想验证aud字段(不推荐生产环境使用),可在deployment.toml中添加:
[apim.jwt] validate_audience = false
6. 日志排查定位问题
若仍出现900908错误,查看WSO2的日志文件repository/logs/wso2carbon.log,里面会有详细错误原因,比如iss不匹配、aud不符合要求或IDP未正确绑定。同时可用jwt.io解析外部JWT,确认iss、exp、aud等声明符合配置要求。
内容的提问来源于stack exchange,提问作者cbopp
相关产品推荐
相关产品推荐

