如何在WSO2 OAuth2及其后端API服务器Oauth2中传递授权头?

时间:2015-07-16 10:33:16

标签: wso2-am

WSO2 API管理器及其后端API服务器(在Azure上)都使用OAuth2。

他们都使用相同的标题:

WSO2 API管理器

授权:持票人72135e9f1dc96201949351261284dc7

API服务器

授权:持票人MfGb9pnTEGVWmDyjlfSZjlxhc8pFtef

我使用Rest客户端进行测试。我发现我可以通过WSO2 API Manager OAuth2,但无法通过API服务器OAuth2。

消息为:"此请求已拒绝授权。" 由API服务器返回。

如何通过重新配置WSO2 API Manager来解决此问题?

非常感谢。

3 个答案:

答案 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处理完您的请求后,它会通过上述调解更改回“授权”标题。

我已在多个项目中实施,但它确实完美无缺。

希望这有帮助。