Как включить простую службу проверки подлинности с помощью колб для приложения bokeh? - PullRequest
0 голосов
/ 31 октября 2019

Итак, вот сценарий. У меня есть два сервера, флеш-сервер и сервер Bokeh, работающие рядом. Сервер Bokeh используется для отображения интерактивных графиков, и я пытаюсь использовать сервер фляги для аутентификации пользователей, прежде чем они смогут получить доступ к серверу Bokeh. Вот мой POST-скрипт для входа в приложение фляги. Я перешел по этой ссылке, чтобы настроить сервер Bokeh ( Простая защита имени пользователя и пароля на сервере Bokeh ). Для флеш-сервера приведенный ниже код используется для аутентификации пользователей и их перенаправления на сервер Bokeh.

from bokeh.util import session_id

@auth.route('/login' , methods=['POST'])
def login_post():
    email = request.form.get('email')
    password = request.form.get('password')

    user = User.query.filter_by(email=email).first() # if this returns a user, then the email already exists in database
    if user and check_password_hash(user.password, password):
        print('user exists')

        s_id = session_id.generate_session_id()
        return redirect("http://localhost:5006/app?bokeh-session-id={}".format(s_id), code=302)
            print('user does not exist')
    return redirect(url_for('auth.login'))

Однако после аутентификации меня перенаправляют на страницу с ошибкой 403: Invalid session ID,Обратите внимание, что в приведенной мной ссылке я создаю секретный ключ для сервера Bokeh, но не было определено, как передать этот секретный ключ серверу-колбе. У кого-нибудь есть идеи как решить эту проблему? Я открыт для более эффективных решений для аутентификации на сервере Bokeh, кроме этого.

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Вам необходимо сгенерировать секретный ключ вне процессов сервера Flask и Bokeh (например, запустив bokeh secret) и передать одно и то же секретное значение обоим процессам. Переменные среды обычно используются для этой цели.

0 голосов
/ 31 октября 2019

Благодаря @bigreddot я смог заставить мою систему аутентификации работать. Как он упомянул в комментариях, я не был точно уверен, как работают переменные env, поэтому настраивал только переменные env для сервера bokeh. После установки тех же значений для сервера фляги, система аутентификации работает должным образом. :)

...