WSO2 API管理器及其后端API服务器(在Azure上)都使用OAuth2 .
它们都使用相同的 Headers 如下:
WSO2 API manager
授权:Bearer 72135e9f1dc96201949351261284dc7
API server
授权:Bearer MfGb9pnTEGVWmDyjlfSZjlxhc8pFtef
我使用Rest客户端进行测试 . 我发现我可以通过WSO2 API Manager OAuth2,但无法通过API Server OAuth2 .
消息是: "Authorization has been denied for this request." 由API服务器返回 .
如何通过重新配置WSO2 API Manager来解决此问题?
非常感谢 .
3 回答
当带有授权标头的WSO2 API Manager发出请求时会发生什么情况,它会读取令牌,对密钥管理器进行验证并在调用后端API服务器之前删除该令牌 . 如果要向后端API服务器添加另一个授权标头,可以在API中按顺序定义中介扩展[1],并通过标头中介添加授权令牌 .
[1] https://docs.wso2.com/display/AM190/Adding+Mediation+Extensions
您可能想尝试通过ESB上的api路由WSO2 API,并在新消息(例如Header mediator中)中添加新的OAuth2头(用于Azure api),然后将其发送到您的后端api .
您无法重复使用相同的OAuth令牌 .
这正是你想要的:
https://docs.wso2.com/display/AM190/Pass+a+Custom+Authorization+Token+to+the+Backend
您将第二个authorizatoion Headers “自定义” . 然后在wso2处理完您的请求后,它会通过上述调解更改回“授权” Headers .
我已经在几个项目中实现了它并且完美地工作了 .
希望这可以帮助 .