为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过 WSO2(API 管理器)将自定义授权标头传递到我的后端 websocket 服务?

如何通过 WSO2(API 管理器)将自定义授权标头传递到我的后端 websocket 服务?

拉莫斯之舞 2022-12-15 16:52:10
我在 WSO2 中使用 Websocket api。我需要将自定义标头传递到我的后端 Websocket 服务。我在这里找到了文档 https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions但它是用于 rest api 调用的,而不是用于 Websocket 的。那么我如何通过 WSO2 将自定义标头发送到我的后端 Websocket 服务。
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您可以在初始 WebSocket 握手中将自定义标头发送到 Web Socket 后端。您可以按照以下格式将其设置为客户端握手请求。


websocket.custom.header.<required-header-name> 

例如:如果预期的标头是 X-JWT-Assertion,则应发送的标头是


websocket.custom.header.X-JWT-Assertion

此功能支持是从 API Manager v2.6.0 添加的


您不能在此处使用中介序列,因为其余通信是使用 ws 框架完成的。


添加更多信息。


下面是一个基于 netty 的 Web 套接字客户端示例,可用于与部署在 API 管理器中的 WS API 进行通信。[1]


授权标头在 Handshake 中设置如下。


final WebSocketClientHandler handler = new WebSocketClientHandler(

                    WebSocketClientHandshakerFactory.newHandshaker(

                            uri, WebSocketVersion.V13, null, false, new DefaultHttpHeaders()

                    .add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f")));

此 Authorization 标头用于通过 API Manager 进行身份验证。如果您需要发送自定义标头,您可以通过修改上面的示例来添加另一个标头,如下所示。


DefaultHttpHeaders headers = new DefaultHttpHeaders();

headers.add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f");

headers.add("websocket.custom.header.X-WS-UserName", "bob");


final WebSocketClientHandler handler = new WebSocketClientHandler(

                    WebSocketClientHandshakerFactory.newHandshaker(

                            uri, WebSocketVersion.V13, null, false, headers));

此标头将发送到后端,


X-WS-UserName : bob

[1] https://docs.wso2.com/download/attachments/57748790/sample-ws-client.zip?version=2&modificationDate=1484568275000&api=v2


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信