2017-04-03 74 views
1

我有一個簡單的散景服務器應用程序,我想在基於Linux的Azure節點上公開它。服務器在那裏運行。簡單的用戶名和密碼保護散景服務器

我的問題是:如何通過用戶名和密碼保護內容?我不需要對用戶進行必要的身份驗證。

我的想法而已(沒試過,可能無法正常工作)

  1. 要與文本字段創建一個額外的背景虛化的服務器頁面。
  2. 在按鈕的回調中,如果密碼適合,則添加測試。如果是,則重定向到原始服務器頁面。否則,通知用戶錯誤的憑據。
+0

根據您的安全需求未經用戶驗證,我不明白您的安全方案沒有用戶身份驗證,這很奇怪,請發佈更多詳細信息。我建議參考文檔[Azure AD的身份驗證方案](https://docs.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-authentication-scenarios)瞭解保護機制在Azure上使用AzureAD。 –

回答

2

您可以嘗試通過外部應用程序只有在用戶認證通過背景虛化服務器禁用代會話ID的,並生成它們:
(基於背景虛化的文檔this part

  1. 生成與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來訪問散景服務器。

    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()  
    
  • 立即訪問背景虛化服務器用戶應該去瓶應用程序並指定登錄名和密碼。