首页 文章

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

提问于
浏览
1

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 回答

  • 3

    当带有授权标头的WSO2 API Manager发出请求时会发生什么情况,它会读取令牌,对密钥管理器进行验证并在调用后端API服务器之前删除该令牌 . 如果要向后端API服务器添加另一个授权标头,可以在API中按顺序定义中介扩展[1],并通过标头中介添加授权令牌 .

    <header name="Authorization" value="Bearer MfGb9pnTEGVWmDyjlfSZjlxhc8pFtef"/>
    

    [1] https://docs.wso2.com/display/AM190/Adding+Mediation+Extensions

  • 0

    您可能想尝试通过ESB上的api路由WSO2 API,并在新消息(例如Header mediator中)中添加新的OAuth2头(用于Azure api),然后将其发送到您的后端api .

    您无法重复使用相同的OAuth令牌 .

  • 0

    这正是你想要的:

    https://docs.wso2.com/display/AM190/Pass+a+Custom+Authorization+Token+to+the+Backend

    您将第二个authorizatoion Headers “自定义” . 然后在wso2处理完您的请求后,它会通过上述调解更改回“授权” Headers .

    我已经在几个项目中实现了它并且完美地工作了 .

    希望这可以帮助 .

相关问题