2.2.2. Basic 認証¶
From認証が使用できない状況下で利用します。 例えば、 REST(Representational State Transfer)などのWebサービスで使用します。
Note
Basic 認証とは HTTP プロトコルが備える、最も基本的な認証方式です。
設定¶
login_methods
リスト値に 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'))
認証用関数¶
認証用関数のパラメータについて説明します。
basic_auth.
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]