猿问

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

我在 WSO2 中使用 Websocket api。我需要将自定义标头传递到我的后端 Websocket 服务。我在这里找到了文档 https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions

但它是用于 rest api 调用的,而不是用于 Websocket 的。那么我如何通过 WSO2 将自定义标头发送到我的后端 Websocket 服务。


拉莫斯之舞
浏览 91回答 1
1回答

守候你守候我

您可以在初始 WebSocket 握手中将自定义标头发送到 Web Socket 后端。您可以按照以下格式将其设置为客户端握手请求。websocket.custom.header.<required-header-name>&nbsp;例如:如果预期的标头是 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(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WebSocketClientHandshakerFactory.newHandshaker(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uri, WebSocketVersion.V13, null, false, new DefaultHttpHeaders()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .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(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WebSocketClientHandshakerFactory.newHandshaker(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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
随时随地看视频慕课网APP

相关分类

Java
我要回答