天天看點

spring cloud gateway中對websocket進行鑒權

提供一種在網關中鑒權websocket的方式

利用子協定Sec-WebSocket-Protocol的資訊

var aWebSocket = new WebSocket(url [, protocols]);

傳入鑒權資訊,在網關中攔截驗證後,改寫protocols内容,轉化為預先定義好的子協定,注意子協定必須一緻才能連接配接。貼上部分代碼作參考:

String header = request.getHeaders().getFirst("Sec-WebSocket-Protocol");
MultiValueMap<String, String> params = request.getQueryParams();
request = request.mutate().header(header, params.getFirst("Authorization")).build();
           
@ServerEndpoint(value = "/test", subprotocols = { "Authorization" }, encoders = {
		WebSocketEn.class }, decoders = { WebSocketDe.class })