散景服务器的简单用户名和密码保护

2023-12-02

我有一个简单的散景服务器应用程序,我想将其公开在基于 Linux 的 Azure 节点上。服务器已启动并正在运行。

我的问题是:如何通过用户名和密码保护内容?我不一定需要对用户进行身份验证。

到目前为止我的想法(没试过,可能行不通)

  1. 创建带有文本字段的额外散景服务器页面。
  2. 在按钮的回调上,添加密码是否合适的测试。如果是,则重定向到原始服务器页面。否则,通知用户错误的凭据。

您可以尝试禁用散景服务器生成会话 ID,并仅在用户身份验证后由外部应用程序生成它们:
(基于这部分散景文档)

  1. 生成密钥bokeh secret命令:


$ bokeh secret
oIWDL7DVYCaBJG9eYQ2Wvf2f2uhOAIM8xNS8Kds3eizV
  
  1. Set BOKEH_SECRET_KEY环境变量到生成值;

$ export BOKEH_SECRET_KEY=oIWDL7DVYCaBJG9eYQ2Wvf2f2uhOAIM8xNS8Kds3eizV  
  1. 设置另一个环境变量:

$ export BOKEH_SIGN_SESSIONS=True  
  1. 运行散景服务器--session-ids external-signed争论:

$ bokeh serve myApp --session-ids external-signed  

在此模式下,用户应提供有效(签名)的会话 ID 来访问散景服务器。

  1. 运行简单的外部进程来询问用户登录名和密码并为他们生成 ID。 这是基于的示例snippet来自烧瓶文档:


    from functools import wraps
    from flask import request, Response, redirect, Flask
    from bokeh.util import session_id

    app = Flask(__name__)

    def check_auth(username, password):
        return username == 'valid_user' and password == 'valid_password'

    def authenticate():
        """Sends a 401 response that enables basic auth"""
        return Response(
        'Could not verify your access level for that URL.\n'
        'You have to login with proper credentials', 401,
        {'WWW-Authenticate': 'Basic realm="Login Required"'})

    def requires_auth(f):
        @wraps(f)
        def decorated(*args, **kwargs):
            auth = request.authorization
            if not auth or not check_auth(auth.username, auth.password):
                return authenticate()
            return f(*args, **kwargs)
        return decorated

    @app.route('/')
    @requires_auth
    def redirect_to_bokeh():
        s_id = session_id.generate_session_id()
        return redirect("http://<bokeh-server-addr>:<port>/?bokeh-session-id={}".format(s_id), code=302)

    if __name__ == "__main__":
        app.run()    
  1. 现在要访问 bokeh 服务器,用户应该转到 Flask 应用程序并指定登录名和密码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

散景服务器的简单用户名和密码保护 的相关文章

随机推荐

  • Unity DI 使用 PerRequestLifetimeManager 注入 DbContext

    我有以下使用 Unity 初始化实例的代码 IUnityContainer container new UnityContainer container RegisterType
  • Python 转储 YAML 在字符串周围使用双引号

    在 Python 3 5 中 我将以下字典转储到 yaml 文件中 D name mydata value x 1 y 2 z 3 当我运行以下代码时 import ruamel import ruamel yaml as yaml D n
  • 需要 C# 中的多重继承功能。我究竟做错了什么?

    class UDPClient class LargeSimulator class RemoteLargeSimulatorClient UDPClient LargeSimulator 俗话说 如果您需要多重继承 那么您的设计就失败了
  • Nodejs中从绝对路径获取文件名?

    如何从 Nodejs 中的绝对路径获取文件名 e g foo txt from var www foo txt 我知道它适用于字符串操作 例如fullpath replace 但我想知道是否有一个明确的方法 比如file getName 在
  • 在Python psutil中调用函数时如何监控CPU的使用情况?

    嘿 我正在学习 psutil 软件包 我想知道如何在函数运行时显示当前的 CPU 使用情况 我想我需要一些线程或类似的东西 但是该怎么做呢 谢谢你的回答 import psutil import random def iHateThis t
  • 来自 Youtube API 的 OAUTH 凭证无效

    我尝试在 OAuth 2 0 Playground 中使用 Youtube API 时收到 401 Invalid Credentials 错误 回应是 error code 401 message Invalid Credentials
  • 在 python3.3 上安装 numpy - 为 python3 安装 pip

    对于 python 3 2 我使用sudo apt get install python3 2 numpy 有效 python3 3怎么办 我想不出任何办法 scipy 等也是如此 谢谢 编辑 这就是它的样子 radu sunlit ins
  • 从 chrome.storage.sync 保存和检索

    我试图将数据对象保存在 chrome 同步存储中 然后检索它 但是 get 函数始终返回一个空对象 我使用的代码是 function storeUserPrefs var key myKey testPrefs val 10 chrome
  • Hibernate envers - 如何仅存储更新的值

    我正在使用 Hibernate Envers 进行审核 更新后和插入后效果很好 我有一个要求 我只需要审核审核表中更新的列 例如employee aud 默认情况下 envers 会将整个持久化实体插入到审计表中 我只需要插入更新的值 有可
  • Apache POI HSSF 流媒体

    有没有办法像新的 SXSSF 流 API 一样使用或实现 XLS 流 我需要处理巨大的 XLS 和 XLSX 电子表格 但由于它们的 HSSF 没有任何可用的流 我总是遇到堆空间问题 达到 1GB 并出现错误 有人对 POI 有什么建议吗
  • Matlab:分离连接的组件

    我正在研究检测硬币的图像处理问题 I have some images like this one here 并想将错误连接的硬币分开 我们已经尝试了 MATLAB 主页上所述的分水岭方法 the watershed transform s
  • setInterval 中的当前时间?

    setInterval function var current getCurrentInterval alert current 2000 可以查吗 没有什么可以给你 当前 间隔 因为可能有几个不同的计时器在运行 你最好自己构建Timer
  • swift 3:创建材料设计芯片

    heyhey 这几天我尝试创建 材料设计芯片 但只成功了一半 我最成功的尝试是从 Button 创建一个子类 Button 是从 UIButton 创建的子类 宇宙心智在他的 MaterialDesign Framework for swi
  • 如何刷新 Eclipse View 插件

    我根据 Eclipse 插件视图教程创建了一个简单的视图 我添加了允许我的插件监听调试器上的更改的功能 我的问题是 每当调试器上发生某些事情时 我希望刷新我的视图并使用新信息进行更新 这是我所拥有的 我正在尝试的 public void c
  • jQuery - 表单仍然提交并返回 false

    http jsfiddle net QsTfc 由于某种奇怪的原因 即使我返回 false 表单仍继续提交 我努力了 submitEdit submit function return false submitEdit submit fun
  • 在 Linux 下,在连接线程上调用 pthread_cancel 会导致段错误

    以下代码在第一次调用 pthread cancel 时以分段错误结束 但仅限在 Linux 下 Mac OS 下运行良好 我是否不允许在已完成运行的线程上调用 pthread cancel 也许我根本不应该调用 pthread cancel
  • 我怎样才能在js中导入东西? (不和谐.js)

    我在 js 中为不和谐机器人导入时遇到问题 这是我的代码的一部分 import as Discord from discord js import as fs from fs import config from config json c
  • 无法使用 Kingfisher 显示 url 中的图像

    我进口的是翠鸟 import UIKit import Kingfisher 这是我的简单代码可以解释问题创建 imageView 并尝试从 URL 显示图像 class ViewController UIViewController IB
  • AngularJS 不会显示(解析)Laravel5 中通过 $http.get 传递的数据

    我有一个简单的SPA应用程序 只是为了Laravel 5 中如何从数据库中获取一些数据 并且对于前端我在用着AngularJS 我的角度文件都在public文件夹 当我去本地主机我得到的不是用户列表 而是字面意思 user1 name us
  • 散景服务器的简单用户名和密码保护

    我有一个简单的散景服务器应用程序 我想将其公开在基于 Linux 的 Azure 节点上 服务器已启动并正在运行 我的问题是 如何通过用户名和密码保护内容 我不一定需要对用户进行身份验证 到目前为止我的想法 没试过 可能行不通 创建带有文本