.. meta:: :keywords: web2py, framework, Access control, アクセス制御, 認証, Basic .. raw:: html
web2py version: 1.99.4
.. _ac_authentication_basic: Basic 認証 ========== From認証が使用できない状況下で利用します。 例えば、 REST(Representational State Transfer)などのWebサービスで使用します。 .. note:: Basic 認証とは HTTP プロトコルが備える、最も基本的な認証方式です。 設定 ---- | 設定前に :ref:`ac_setup` を完了しておく必要があります。また :ref:`ac_methods_variance` も参照下さい。 | モデル定義(db.pyなど)にて、 :attr:`~Auth.settings.login_methods` リスト値に :func:`~basic_auth` 関数を追加するか置き換えます。 認証方式を追加した例 :: from gluon.contrib.login_methods.basic_auth import basic_auth auth.settings.login_methods.append(basic_auth()) 次に、auth.settings.allow_basic_login 属性値を True に変更します(デフォルトは False)。 :: auth.settings.allow_basic_login = True これによって、Basic認証が利用可能となります。 Basic認証では平文でID及びパスワードを送ります。このため安全性を高めるには、SSL/TLS(HTTPS)を使用した暗号化が望ましいです。 また、 auth.settings.allow_basic_login の属性値は、Basic認証の動作状態を容易に変更可能です。Basic認証が必要な状況時だけ属性値を True に変更し、通常は False にするなどの運用が可能です。 Basic認証を別サーバで行う場合は、basic_auth関数に認証用サーバをパラメータで指定します。 :: from gluon.contrib.login_methods.basic_auth import basic_auth auth.settings.login_methods.append(basic_auth('http://server.example.com')) 認証用関数 ---------- 認証用関数のパラメータについて説明します。 .. py:module:: basic_auth .. py:function:: basic_auth( [server="http://127.0.0.1"] ) server Basic認証を行うサーバを指定します。デフォルト値は " `http://127.0.0.1` " です。 使用例 ------ `Wget `_ を使った使用例を示します。 まず、Wget をインストールします。さらに Wget がアクセスできるように、テスト用関数を定義します。今回はシステム時刻を返す簡単なサンプルです。 テスト用サンプル関数(default.py) :: @auth.requires_login() def give_me_time(): import time return time.ctime() Wget をこの関数に対して実行してみます。Wget の構文は次のように auth-no-challenge オプションを付ける必要があります。 このオプションが無いと、ログイン画面にリダイレクトしようとします。 :: wget --auth-no-challenge --user=id --password=password URL user にはユーザID、password にはパスワードを設定します。 実行結果 :: C:\>wget --auth-no-challenge --user=testuser@example.com --password=aaaa http://127.0.0.1:8000/myapp/default/give_me_time SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\Program Files\GnuWin32/etc/wgetrc --2012-01-01 00:00:00-- http://127.0.0.1:8000/myapp/default/give_me_time 127.0.0.1:8000 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 24 [text/html] `give_me_time' に保存中 100%[======================================>] 24 --.-K/s 時間 0s 2012-01-01 00:00:00 (533 KB/s) - `give_me_time' へ保存完了 [24/24]