ストレージドライバ

ストレージドライバ -- 導入

概要

PEAR::Authでは、 種々のいわゆる「ストレージコンテナ」を使用できます。 以下では、各ストレージコンテナの詳細について述べます。 それらコンテナのいずれもがあなたのニーズに合致しない場合は、 独自のものを作成することも可能です。

データベース

PEAR::Authは、 PEAR::DB 抽象化レイヤーを使用します。 つまり、ログインデータの保持には、 DB 抽象化レイヤーがサポートするデータベースの内、 どれでも使用できます。

本ストレージを使用する場合、 Auth constructor() の引数は配列となります。

表 28-1配列のキーと値

キー説明デフォルト値
"dsn" 有効で整形式の DSN ""
"table" 認証データが保持されるデータベースのテーブル名 "auth"
"usernamecol" ユーザ名が保持されるカラム名 "username"
"passwordcol" MD5 暗号化されたパスワードが保持されるカラム名。 32 文字以上を保持可能か確認してください。 "password"

ファイル

本ストレージを使用する場合、 Auth constructor() の引数には、 passwd 形式の ファイル名です。

SMBPasswd

このストレージコンテナは、SAMBA の smbpasswd ファイルを使って認証を 行います。 本ストレージを使用する場合、 Auth constructor() の引数は、 SAMBA passwd 形式の ファイル名です。

IMAP

このストレージコンテナは、指定された IMAP サーバに接続し、 指定されたユーザ名・パスワードでログインしようと試みます。

本ストレージを使用する場合、 Auth constructor() の引数は、配列となります。

表 28-2配列のキーと値

キー説明デフォルト値
"host" IMAP サーバの IP アドレスまたはホスト名 "localhost"
"port" IMAP サーバが listening しているポート "143"

LDAP

本ストレージを使用する場合、 Auth constructor() の引数は、配列となります。

表 28-3配列のキーと値

キー説明デフォルト値
"host" アクセスすべき IP アドレスまたはホスト名 "localhost"
"port" LDAP サーバに接続するためのポート "389"
"basedn" ベースの区別名 "o=netsols,c=de"
"userattr" リクエストする属性名 "uid"

POP3

このストレージコンテナは、指定された POP3 サーバに接続し、 指定されたユーザ名・パスワードでログインを試みます。

本ストレージを使用する場合、 Auth constructor() の引数は、server:port 形式、または単に server 形式とします。

RADIUS

このストレージコンテナを動作させるためには、PECL radius が必要です。

本ストレージを使用する場合、 Auth constructor() の引数は、配列となります。

表 28-4配列のキーと値

キー説明デフォルト値
"servers"

RADIUS サーバの配列。 各サーバは、ホスト、ポート、共有秘密鍵(shared secret)、 タイムアウト、最大試行数から成る。

ホスト引数には、完全修飾ドメイン名 またはドット区切りの IP アドレスをテキスト形式で指定します。 ポート引数には、サーバに接続するための UDP ポートを指定します。 ポート引数に 0 が与えられた場合は、 ネットワークサービスのデータベース中の radius/udp のエントリを 調べます。 エントリが見つから無ければ、RADIUS 標準の認証用ポート (1812) を使用します。 共有秘密鍵引数には、サーバホストに対する共有秘密鍵を指定します。 RADIUS プロトコルは、共有秘密鍵の 128 バイト目以降を無視します。 タイムアウト引数には、サーバからの応答に対するタイムアウトを 秒単位で指定します。 最大試行数には、認証を断念するまでに 最大何回認証リクエストを繰り返すかを指定します。

最大 10 のサーバを指定できます。 複数のサーバが指定された場合は、 有効なレスポンスが得られるか、 各サーバで最大試行数に達するかするまで ラウンドロビン形式で試行していきます。

array("localhost", 0, "testing123", 3, 3)
"authtype"

リクエストの認証方法。 PAP, CHAP_MD5, MSCHAPv1, MSCHAPv2 が指定可能。

各メソッドごとに異なる依存性が存在します。 PAP 以外のメソッドは、Crypt_CHAP パッケージを必要とします。 MS-CHAP を使用する場合は、mhash 拡張が必要です。

"PAP"

SOAP

本ストレージを使用する場合、 Auth constructor() の引数は、配列となります。

表 28-5配列のキーと値

キー説明デフォルト値
"endpoint" 対象サービスの URI  
"namespace" 対象 WEB サービスのネームスペース  
"method" コールしたい SOAP メソッド  
"encoding" コンテントのエンコーディング (例、utf8).  
"usernamefield" ユーザ名が保持されているフィールド名  
"passwordfield" パスワードが保持されているフィールド名  

vpopmail

このコンテナは、ユーザ名とパスワードの認証に 既存の vpopmail サービスを使用します。

本ストレージは、引数を要求しません。

カスタム ストレージコンテナ

独自ストレージコンテナ使用の例

以下は、独自の Auth ストレージコンテナのスケルトンです。

例 28-1CustomAuthContainer.php


<?php
include_once('Auth/Container.php');
class CustomAuthContainer extends Auth_Container {
    /** Constructor */
    function CustomAuthContainer($params){
      // ここで初期化
    }
    function fetchData($username, $password){
        // 有効性のチェック他
        if($isvalid){
            // 何らかの動作を実行
            return(true);
        }
        return(false);
    }
}
?>

そして、以下はその使用方法です。

例 28-2authcustom.php


<?php
include_once('CustomAuthContainer.php');
include_once('Auth/Auth.php');

$auth_container = new CustomAuthContainer($params);
$myauth = new Auth($auth_container);

$myauth->start();
?>