繁体   English   中英

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

[英]How to pass Custom Authorization Header to my backend websocket service through WSO2 (API Manager)?

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

但这是针对其余api调用而不是针对Websocket。 因此,如何通过WSO2将自定义标头发送到后端Websocket服务。

您可以在初始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 Manager中部署的WS API通信。 [1]

授权标头在握手中设置如下。

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

该授权标头用于通过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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM