Aws Websocket {"message": "Missing Authentication Token"}。

问题描述 投票:0回答:1

有人知道这段代码有什么问题吗.来自api网关的地址返回{"message". "Missing Authentication Token"}.所有的代码都是通过无服务器框架部署在AWS上。"Missing Authentication Token"}.所有代码都是由AWS上的无服务器框架部署的。

JS自定义.js

var socket;

// Connect to the WebSocket and setup listeners
function setupWebSocket(username, token) {
    socket = new ReconnectingWebSocket(" {api endpoint}?token=" + token);



    socket.onopen = function(event) {
        data = {"action": "getRecentMessages"};
        socket.send(JSON.stringify(data));
    };
        socket.onmessage = function(message) {
        var data = JSON.parse(message.data);
        data["messages"].forEach(function(message) {
            if ($("#message-container").children(0).attr("id") == "empty-message") {
                $("#message-container").empty();
            }
            if (message["username"] === username) {
                $("#message-container").append("<div class='message self-message'><b>(You)</b> " + message["content"]);
            } else {
                $("#message-container").append("<div class='message'><b>(" + message["username"] + ")</b> " + message["content"]);
            }
            $("#message-container").children().last()[0].scrollIntoView();
        });
    };
}
// Sends a message to the websocket using the text in the post bar
function postMessage(token){
    var content = $("#post-bar").val();
    if (content !== "") {
        data = {"action": "sendMessage", "token": token, "content": content};
        socket.send(JSON.stringify(data));
        $("#post-bar").val("");
    }
}

处理程序.py

def _send_to_connection(connection_id, data, event):
    gatewayapi = boto3.client("apigatewaymanagementapi",
                              endpoint_url="https://" + event["requestContext"]["domainName"] +
                                           "/" + event["requestContext"]["stage"])
    return gatewayapi.post_to_connection(ConnectionId=connection_id,
                                         Data=json.dumps(data).encode('utf-8'))
python amazon-web-services websocket api-gateway
1个回答
0
投票

与消息相反,这个问题其实并不是丢失了认证令牌。当您访问的端点不完全正确时,API Gateway会返回相同的消息;即不存在,可能是由于一些印刷错误或轻微的错误配置。我建议确认你的端点是有效的,然后重新检查。

你得到这个消息的原因是,如果他们返回404,这意味着你现在知道你调用的(无效)端点不存在。但这也意味着你可以做一个蛮力的过程,检查所有可能的端点,任何没有返回404的端点确实存在,但在某种防火墙、认证系统或API Key后面。通过为所有端点返回403,即使它们不存在,AWS正在改善他们的安全态势。这和在登录表单上不返回 "用户名不存在 "这样的信息是一样的道理,因为否则有人可以根据你的错误信息找到找到有效的用户名。

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.