2017-10-14 1 views
1

other 질문에서 언급했듯이 녹스에서는 웹 소켓 인증을 지원하지 않지만 임시 솔루션으로 백엔드 서비스에서 인증을 처리 할 수 ​​있습니다. 우리의 테스트는 Knox가 Authorization 헤더를 백엔드에 전달하지 않는다는 것을 보여주었습니다.녹스가 통과하도록 구성하는 방법 백엔드 서비스에 대한 인증 헤더?

[client]$ curl -i -u '<user>:<password>' https://knox-server/gateway/default/myservice/ping 

# 8090 is our backend port 
[knox-server]$ ngrep -W byline port 8090 
interface: eth0 
filter: (port 8090) and ((ip || ip6) || (vlan && (ip || ip6))) 

# 
T <knox-server>:59118 -> <myservice>:8090 [AP] 
GET /ping?doAs=<user> HTTP/1.1. 
X-Forwarded-For: <client>. 
X-Forwarded-Proto: https. 
X-Forwarded-Port: 443. 
X-Forwarded-Host: <knox-server>. 
X-Forwarded-Server: <knox-server>. 
X-Forwarded-Context: /gateway/default. 
User-Agent: curl/7.54.0. 
Accept: */*. 
Host: <myservice>:8090. 
Connection: Keep-Alive. 
Accept-Encoding: gzip,deflate. 
. 

# 
T <myservice>:8090 -> <knox-server>:59118 [AP] 
HTTP/1.1 200 OK. 
Date: Sat, 14 Oct 2017 14:27:58 GMT. 
X-Application-Context: myservice:prod:8090. 
Content-Type: text/plain;charset=utf-8. 
Content-Length: 4. 
. 
PONG 

Knox (HDP 2.6.2에서 0.12.0)를 인증 헤더를 websocket 연결을위한 백엔드로 전달하도록 어떻게 설정해야합니까?

답변

1

이 질문을 쓰는 동안 Knox 0.14.0에서 쿠키와 헤더를 백엔드 서비스에 전달하는 문제를 해결하는 티켓 KNOX-895이 있다는 것을 깨달았습니다.

[EDIT]

I는 (2d236e78)를 KNOX-895를 포함 녹스 자식 REPO는 (92b1505a 커밋), 샌드 토폴로지 로컬 첨가 웹 소켓 서비스 실행 클로닝.

[tulinski]$ wscat -n --auth 'user:password' -c wss://localhost:8443/gateway/sandbox/echows 
[tulinski]$ sudo ngrep -W byline host echo.websocket.org 
# 
T 192.168.0.16:59952 -> 174.129.224.73:80 [AP] 
GET/HTTP/1.1. 
Host: echo.websocket.org. 
Upgrade: websocket. 
Connection: Upgrade. 
Sec-WebSocket-Key: Z4Qa9Dxwr6Qvq2QAicsT5Q==. 
Sec-WebSocket-Version: 13. 
Pragma: no-cache. 
Cache-Control: no-cache. 
Authorization: Basic dXNlcjpwYXNzd29yZA==. 
. 

## 
T 174.129.224.73:80 -> 192.168.0.16:59952 [AP] 
HTTP/1.1 101 Web Socket Protocol Handshake. 
Connection: Upgrade. 
Date: Mon, 16 Oct 2017 14:23:49 GMT. 
Sec-WebSocket-Accept: meply+6cIyjbH+Vk2OsAqKJDWic=. 
Server: Kaazing Gateway. 
Upgrade: websocket. 
. 

인증 헤더가 백엔드 서비스로 전달됩니다.