Dart:客户端的Websocket Bearer身份验证

时间:2018-04-29 20:25:55

标签: oauth dart aqueduct

我正在使用Dart服务器端Aqueduct框架。我的程序使用其OAuth 2.0承载授权来保护某些路由。这很好用。但是,当我尝试通过安全路由建立websocket连接时,我遇到了问题。这是代码:

router
  .route("/connect")
  .pipe(new Authorizer(authServer));
  .listen((request) async {
    var userID = request.authorization.resourceOwnerIdentifier;
    var socket = await WebSocketTransformer.upgrade(request.innerRequest);
    socket.listen((event) => handleEvent(event, fromUserID: userID));

    connections[userID] = socket;

    return null;
  });

此代码直接来自Aqueduct网站:https://aqueduct.io/docs/http/websockets/

我的问题是,客户应该如何看待这个?具体来说,如何在建立websocket连接时在HTTP标头中设置授权。我尝试了很多不同的东西,包括以下内容:

void connect()
{
    _address = "ws://$ip:$port/connect";
    _webSocket = new WebSocket(_address, {"Authorization":"Bearer ks123..."});
}

void connect()
{
    _address = "ws://$ip:$port/connect&access_token=ks123...";
    _webSocket = new WebSocket(_address);
}

void connect()
{
    _address = "ws://$ip:$port/connect&Authorization=Bearer ks123...";
    _webSocket = new WebSocket(_address);
}

void connect()
{
    _address = "ws://$ip:$port/connect";
    _webSocket = new WebSocket(_address, ["Authorization Bearer ks123.."]);
}

有谁知道如何解决这个问题?

0 个答案:

没有答案
相关问题