1
我有一個簡單的散景服務器應用程序,我想在基於Linux的Azure節點上公開它。服務器在那裏運行。簡單的用戶名和密碼保護散景服務器
我的問題是:如何通過用戶名和密碼保護內容?我不需要對用戶進行必要的身份驗證。
我的想法而已(沒試過,可能無法正常工作)
- 要與文本字段創建一個額外的背景虛化的服務器頁面。
- 在按鈕的回調中,如果密碼適合,則添加測試。如果是,則重定向到原始服務器頁面。否則,通知用戶錯誤的憑據。
我有一個簡單的散景服務器應用程序,我想在基於Linux的Azure節點上公開它。服務器在那裏運行。簡單的用戶名和密碼保護散景服務器
我的問題是:如何通過用戶名和密碼保護內容?我不需要對用戶進行必要的身份驗證。
我的想法而已(沒試過,可能無法正常工作)
您可以嘗試通過外部應用程序只有在用戶認證通過背景虛化服務器禁用代會話ID的,並生成它們:
(基於背景虛化的文檔this part)
bokeh secret
密鑰命令:$ bokeh secret oIWDL7DVYCaBJG9eYQ2Wvf2f2uhOAIM8xNS8Kds3eizV
BOKEH_SECRET_KEY
環境變量生成值;$ export BOKEH_SECRET_KEY=oIWDL7DVYCaBJG9eYQ2Wvf2f2uhOAIM8xNS8Kds3eizV
$ export BOKEH_SIGN_SESSIONS=True
--session-ids external-signed
論點:$ bokeh serve myApp --session-ids external-signed
在這種模式下,用戶應該提供有效的(簽名)會話ID來訪問散景服務器。
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()
根據您的安全需求未經用戶驗證,我不明白您的安全方案沒有用戶身份驗證,這很奇怪,請發佈更多詳細信息。我建議參考文檔[Azure AD的身份驗證方案](https://docs.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-authentication-scenarios)瞭解保護機制在Azure上使用AzureAD。 –