Как передать пользовательский заголовок авторизации в бэкэнд-службу веб-сокета через WSO2 (API Manager)? - PullRequest
1 голос
/ 27 мая 2019

Я использую API Websocket в WSO2. Мне нужно передать пользовательский заголовок в мой бэкэнд-сервис Websocket. Я нашел документацию здесь https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions

но это для остальных API-вызов не для Websocket. Итак, как я могу отправлять пользовательский заголовок в мою бэкэнд-службу Websocket через WSO2.

1 Ответ

2 голосов
/ 27 мая 2019

Вы можете отправить пользовательский заголовок в бэкэнд Web Socket при первоначальном рукопожатии WebSocket. Вы можете установить его в следующем формате для запроса подтверждения клиента.

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

Пример: если ожидаемый заголовок - X-JWT-Assertion, заголовок, который должен быть отправлен, -

websocket.custom.header.X-JWT-Assertion

Эта функция добавлена ​​из API Manager v2.6.0

Вы не можете использовать здесь посреднические последовательности, так как остальная часть связи выполняется с помощью фреймов ws.

Добавление дополнительной информации.

Ниже приведен пример сетевого сокет-клиента, который можно использовать для связи с WS API, развернутым в API Manager. [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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...