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