如何通过 WSO2(API 管理器)将自定义授权 Header 传递到我的后端 websocket 服务?
How to pass Custom Authorization Header to my backend websocket service through WSO2 (API Manager)?
我在 WSO2 中使用 Websocket api。我需要将自定义 header 传递到我的后端 Websocket 服务。我在这里找到了一份文件
https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions
但它是为了休息 api 调用而不是为了 Websocket。那么我如何通过 WSO2 将自定义 header 发送到我的后端 Websocket 服务。
您可以在初始 WebSocket 握手中向 Web Socket 后端发送自定义 header。
您可以按照以下格式设置到客户端握手请求。
websocket.custom.header.<required-header-name>
例如:如果预期的header是X-JWT-Assertion,那么应该发送的header是
websocket.custom.header.X-JWT-Assertion
此功能支持是从 API Manager v2.6.0
添加的
您不能在此处使用中介序列,因为其余的通信是使用 ws 框架完成的。
正在添加更多信息。
这是一个基于 netty 的 Web 套接字客户端示例,可用于与部署在 API 管理器中的 WS API 进行通信。 [1]
授权header在Handshake中设置如下。
final WebSocketClientHandler handler = new WebSocketClientHandler(
WebSocketClientHandshakerFactory.newHandshaker(
uri, WebSocketVersion.V13, null, false, new DefaultHttpHeaders()
.add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f")));
此授权 header 用于向 API 管理器进行身份验证。如果需要发送一个自定义的header,可以将上面的例子修改如下,再添加一个header
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));
这个 header 将被发送到后端,
X-WS-UserName : bob
我在 WSO2 中使用 Websocket api。我需要将自定义 header 传递到我的后端 Websocket 服务。我在这里找到了一份文件 https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions
但它是为了休息 api 调用而不是为了 Websocket。那么我如何通过 WSO2 将自定义 header 发送到我的后端 Websocket 服务。
您可以在初始 WebSocket 握手中向 Web Socket 后端发送自定义 header。 您可以按照以下格式设置到客户端握手请求。
websocket.custom.header.<required-header-name>
例如:如果预期的header是X-JWT-Assertion,那么应该发送的header是
websocket.custom.header.X-JWT-Assertion
此功能支持是从 API Manager v2.6.0
添加的您不能在此处使用中介序列,因为其余的通信是使用 ws 框架完成的。
正在添加更多信息。
这是一个基于 netty 的 Web 套接字客户端示例,可用于与部署在 API 管理器中的 WS API 进行通信。 [1]
授权header在Handshake中设置如下。
final WebSocketClientHandler handler = new WebSocketClientHandler(
WebSocketClientHandshakerFactory.newHandshaker(
uri, WebSocketVersion.V13, null, false, new DefaultHttpHeaders()
.add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f")));
此授权 header 用于向 API 管理器进行身份验证。如果需要发送一个自定义的header,可以将上面的例子修改如下,再添加一个header
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));
这个 header 将被发送到后端,
X-WS-UserName : bob