2012-02-27 3 views
0

私はAppEngine(Python)を使って作業しています。私がしたいのは、OpenIDログインをデフォルトのプロバイダに設定して、そのプロバイダを使用して問題なくログインできるようにすることです。私は静的なコンテンツ(HTMLページ)を表示するためにログインした直後にユーザーにパスワードを要求します。ユーザーが正しいパスワードを入力しなかった場合は、別のページにリダイレクトします。保護はサーバー側にしてください:)任意のアイデア??パスワード保護静的ページAppEngineハウツーですか?

P.S.私は ".htaccess/htpasswd"に似た解決策を求めていますが、appエンジン用です。

+0

app.yamlをで "アクセス権の設定" を使用してオプションのいずれかであるためではありません私は手動で登録された/ログ可能なユーザーにパスワードを送信したい、または私が誰のためにパスワードを選択することもできればクールだ。しかし、とにかく...基本的な考え方は、1つの事前定義されたパスワードでページを保護し、それをユーザーに送信することです。 – Jmlevick

答えて

2

AFAIK、GAEはこのような設定(OpenIDログイン後の静的パスワード)をサポートしていません。

私はあなたのハンドラを経由して、静的なコンテンツを提供することであろうこの作品を作るために見る唯一の方法:

  1. クライアントが
  2. あなたのハンドラは、このURLを処理するために登録された静的コンテンツの要求を行う
  3. ユーザが認証されたハンドラチェック。そうでない場合は、パスワードを要求します。
  4. 認証されると、ハンドラは静的ファイルを読み取り、ユーザに返します。
0

は、GoogleのApp Engineとの.htaccessスタイルのパスワードを模倣することができ、これを試してみてください:

def basicAuth(func): 
    def callf(webappRequest, *args, **kwargs): 
    # Parse the header to extract a user/password combo. 
    # We're expecting something like "Basic XZxgZRTpbjpvcGVuIHYlc4FkZQ==" 
    auth_header = webappRequest.request.headers.get('Authorization') 

    if auth_header == None: 
     webappRequest.response.set_status(401, message="Authorization Required") 
     webappRequest.response.headers['WWW-Authenticate'] = 'Basic realm="Kalydo School"' 
    else: 
     # Isolate the encoded user/passwd and decode it 
     auth_parts = auth_header.split(' ') 
     user_pass_parts = base64.b64decode(auth_parts[1]).split(':') 
     user_arg = user_pass_parts[0] 
     pass_arg = user_pass_parts[1] 

     if user_arg != "admin" or pass_arg != "foobar": 
     webappRequest.response.set_status(401, message="Authorization Required") 
     webappRequest.response.headers['WWW-Authenticate'] = 'Basic realm="Secure Area"' 
     # Rendering a 401 Error page is a good way to go... 
     self.response.out.write(template.render('templates/error/401.html', {})) 
     else: 
     return func(webappRequest, *args, **kwargs) 

    return callf 

class AuthTest(webapp.RequestHandler): 
    @basicAuth 
    def get(self): 
    .... 

How-To: Dynamic WWW-Authentication (.htaccess style) on Google App Engine

+0

ねえ、それは良い解決策です。 use auth_header == Noneの代わりにNoneを使用することを検討してください。 –

関連する問題