Ошибка недопустимого токена при попытке войти в node-red - PullRequest
0 голосов
/ 11 июля 2020

Node-RED: v1.0.6

Node: v10.20.1

OS: Linux xxxxxxxx 3.10.0-514.10.2.el7.x86_64 # 1 SMP Thu Mar 2 11:35:29 PST 2017 x86_64 x86_64 x86_64 GNU / Linux

У меня есть изображение красного цвета узла, которое действует как бэкэнд одного из наших веб-приложений. Он хорошо работает на одном хосте, и я хочу развернуть его на другом хосте. Я сделал docker commit, переместил изображение вместе с данными, присутствующими в томе (/ data dir), и приложение, похоже, работает хорошо. Все API-интерфейсы также хорошо работают с приложением. Единственная проблема, с которой я столкнулся, заключается в том, что я не могу войти в Node-RED на этом новом хосте.

Пользовательский интерфейс не отображает никаких ошибок на экране входа в систему. Он просто пытается войти в систему и возвращается к экрану входа в систему. Ошибок нет.

Я включил трассировку для отладки и вижу следующие ошибки в журнале.

11/07/2020 13:27:0611 Jul 07:57:06 - [audit] {"event":"auth.invalid-token","level":98,"timestamp":1594454226435}
11/07/2020 13:27:17Logged In  **// This is a custom message from my custom login**
11/07/2020 13:27:1711 Jul 07:57:17 - [audit] {"event":"auth.login","username":"123456789","client":"node-red-editor","scope":"*","level":98,"timestamp":1594454237413}

Мой пользовательский логин печатает «вошел в систему», что означает, что вызов api для входа в систему flow работает хорошо и тоже аутентифицируется, но не входит в систему.

Я предполагаю, что NR пытается сохранить или, возможно, получить сеансы из хранилища и не может этого сделать.

I просмотрел проект NR github и обнаружил, что это сообщение регистрируется node-red/red/api/auth/strategies.js.

var bearerStrategy = function (accessToken, done) {
    // is this a valid token?
    Tokens.get(accessToken).then(function(token) {
        if (token) {
            Users.get(token.user).then(function(user) {
                if (user) {
                    done(null,user,{scope:token.scope});
                } else {
                    **log.audit({event: "auth.invalid-token"});**
                    done(null,false);
                }
            });
        } else {
            log.audit({event: "auth.invalid-token"});
            done(null,false);
        }
    });
}

Я JavaScript нуб и не уверен, как все это работает (хранение / получение токенов и т. д. c .)

Не могли бы вы намекнуть, может здесь что-то не так?

...