gpt4 book ai didi

java - 如何通过 WSO2(API 管理器)将自定义授权 header 传递到我的后端 Websocket 服务?

转载 作者:行者123 更新时间:2023-11-30 01:50:15 26 4
gpt4 key购买 nike

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

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

最佳答案

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

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 在握手中设置如下。

final WebSocketClientHandler handler = new WebSocketClientHandler(
WebSocketClientHandshakerFactory.newHandshaker(
uri, WebSocketVersion.V13, null, false, new DefaultHttpHeaders()
.add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f")));

此授权 header 用于通过 API Manager 进行身份验证。如果您需要发送自定义 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

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

关于java - 如何通过 WSO2(API 管理器)将自定义授权 header 传递到我的后端 Websocket 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com