|
|
@@ -1,6 +1,6 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<!-- Reviewed: no -->
|
|
|
-<!-- EN-Revision: 15845 -->
|
|
|
+<!-- EN-Revision: 15860 -->
|
|
|
<sect1 id="zend.auth.adapter.dbtable">
|
|
|
<title>データベースのテーブルでの認証</title>
|
|
|
<sect2 id="zend.auth.adapter.dbtable.introduction">
|
|
|
@@ -14,46 +14,51 @@
|
|
|
コンストラクタではその他の設定オプションも指定することができます。
|
|
|
これらは個別にインスタンスメソッドで指定することもできます。
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
次のような設定オプションが使用可能です。
|
|
|
- <itemizedlist>
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- <emphasis>tableName</emphasis>:
|
|
|
- これはデータベースのテーブル名です。証明情報が含まれ、
|
|
|
- 認証クエリの問い合わせ先となるテーブル名を指定します。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- <emphasis>identityColumn</emphasis>:
|
|
|
- これは、ID を表すデータベーステーブルのカラム名です。
|
|
|
- このカラムには、ユーザ名やメールアドレスのような一意な値が含まれている必要があります。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- <emphasis>credentialColumn</emphasis>:
|
|
|
- これは、証明情報を表すデータベーステーブルのカラム名です。
|
|
|
- 単純な ID およびパスワードによる認証方式では、この値がパスワードに対応します。
|
|
|
- <emphasis>credentialTreatment</emphasis> オプションも参照ください。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- <emphasis>credentialTreatment</emphasis>:
|
|
|
- 多くの場合、パスワードやその他機密情報は、何らかの関数やアルゴリズムで
|
|
|
- 暗号化、ハッシュ化、符号化、ぼかしなどの処理が行われています。
|
|
|
- これらの処理を表すパラメータつきの文字列、たとえば 'MD5(?)'
|
|
|
- や 'PASSWORD(?)' を指定することで、
|
|
|
- 証明データに対して任意の SQL を適用できるようになります。
|
|
|
- これらの関数は RDBMS によって異なります。
|
|
|
- データベースシステムでどのような関数が使えるのかについては、
|
|
|
- データベースのマニュアルをご確認ください。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
- </itemizedlist>
|
|
|
</para>
|
|
|
+
|
|
|
+ <itemizedlist>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <emphasis>tableName</emphasis>:
|
|
|
+ これはデータベースのテーブル名です。証明情報が含まれ、
|
|
|
+ 認証クエリの問い合わせ先となるテーブル名を指定します。
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <emphasis>identityColumn</emphasis>:
|
|
|
+ これは、ID を表すデータベーステーブルのカラム名です。
|
|
|
+ このカラムには、ユーザ名やメールアドレスのような一意な値が含まれている必要があります。
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <emphasis>credentialColumn</emphasis>:
|
|
|
+ これは、証明情報を表すデータベーステーブルのカラム名です。
|
|
|
+ 単純な ID およびパスワードによる認証方式では、この値がパスワードに対応します。
|
|
|
+ <emphasis>credentialTreatment</emphasis> オプションも参照ください。
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <emphasis>credentialTreatment</emphasis>:
|
|
|
+ 多くの場合、パスワードやその他機密情報は、何らかの関数やアルゴリズムで
|
|
|
+ 暗号化、ハッシュ化、符号化、ぼかしなどの処理が行われています。
|
|
|
+ これらの処理を表すパラメータつきの文字列、たとえば
|
|
|
+ '<methodname>MD5(?)</methodname>' や
|
|
|
+ '<methodname>PASSWORD(?)</methodname>'
|
|
|
+ を指定することで、
|
|
|
+ 証明データに対して任意の <acronym>SQL</acronym> を適用できるようになります。
|
|
|
+ これらの関数は <acronym>RDBMS</acronym> によって異なります。
|
|
|
+ データベースシステムでどのような関数が使えるのかについては、
|
|
|
+ データベースのマニュアルをご確認ください。
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+ </itemizedlist>
|
|
|
+
|
|
|
<example id="zend.auth.adapter.dbtable.introduction.example.basic_usage">
|
|
|
<title>基本的な使用法</title>
|
|
|
<para>
|
|
|
@@ -63,11 +68,13 @@
|
|
|
関連付けるデータベース接続を表します。
|
|
|
まず、データベース接続を作成する必要があります。
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
次のコードは、メモリ内データベースのアダプタを作成し、
|
|
|
簡単なテーブルスキーマを作成し、そして後で認証クエリを実行するための行を追加します。
|
|
|
この例を実行するには、PDO SQLite 拡張モジュールが有効になっている必要があります。
|
|
|
</para>
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
// メモリ内で SQLite データベース接続を作成します
|
|
|
$dbAdapter = new Zend_Db_Adapter_Pdo_Sqlite(array('dbname' =>
|
|
|
@@ -89,12 +96,14 @@ $sqlInsert = "INSERT INTO users (username, password, real_name) "
|
|
|
|
|
|
// データを挿入します
|
|
|
$dbAdapter->query($sqlInsert);]]></programlisting>
|
|
|
+
|
|
|
<para>
|
|
|
データベース接続およびテーブルが使用可能となったので
|
|
|
<classname>Zend_Auth_Adapter_DbTable</classname> のインスタンスが作成できます。
|
|
|
設定オプションの値は、コンストラクタで渡すか、
|
|
|
あるいはインスタンスを作成した後に設定用メソッドで指定します。
|
|
|
</para>
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
// コンストラクタにパラメータを渡し、インスタンスを設定します
|
|
|
$authAdapter = new Zend_Auth_Adapter_DbTable(
|
|
|
@@ -117,6 +126,7 @@ $authAdapter
|
|
|
認証クエリを処理するには、入力された証明情報をアダプタに渡してから
|
|
|
<methodname>authenticate()</methodname> メソッドをコールします。
|
|
|
</para>
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
// 入力情報 (ログインフォームからの値など) を設定します
|
|
|
$authAdapter
|
|
|
@@ -125,12 +135,14 @@ $authAdapter
|
|
|
;
|
|
|
|
|
|
// 認証クエリを実行し、結果を保存します
|
|
|
-$result = $authAdapter->authenticate();]]></programlisting>
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
<para>
|
|
|
認証結果オブジェクトでの <methodname>getIdentity()</methodname>
|
|
|
メソッドに加え、<classname>Zend_Auth_Adapter_DbTable</classname>
|
|
|
は認証の成功時にテーブルの行を取得する機能もサポートしています。
|
|
|
</para>
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
// ID を表示します
|
|
|
echo $result->getIdentity() . "\n\n";
|
|
|
@@ -263,18 +275,18 @@ $adapter = new Zend_Auth_Adapter_DbTable(
|
|
|
<para>
|
|
|
salt がたとえハードコーディングされた固定文字列であったとしても、
|
|
|
セキュリティを向上させることができます。
|
|
|
- 仮に (SQL インジェクション攻撃などで) データベースに侵入されたとしても、
|
|
|
+ 仮に (<acronym>SQL</acronym> インジェクション攻撃などで) データベースに侵入されたとしても、
|
|
|
ウェブサーバは無傷なのでデータを攻撃者に悪用されることはありません。
|
|
|
</para>
|
|
|
</note>
|
|
|
<para>
|
|
|
- もうひとつの方法は、アダプタを作成したあとで Zend_Auth_Adapter_DbTable
|
|
|
+ もうひとつの方法は、アダプタを作成したあとで <classname>Zend_Auth_Adapter_DbTable</classname>
|
|
|
の <methodname>getDbSelect()</methodname> メソッドを使うことです。
|
|
|
- このメソッドが返す Zend_Db_Select オブジェクトのインスタンスで
|
|
|
- authenticate() を実行します。このメソッドは、authenticate()
|
|
|
+ このメソッドが返す <classname>Zend_Db_Select</classname> オブジェクトのインスタンスで
|
|
|
+ <methodname>authenticate()</methodname> を実行します。このメソッドは、<methodname>authenticate()</methodname>
|
|
|
をコールしたかどうかにかかわらず同じオブジェクトを返すことに注意しましょう。
|
|
|
このオブジェクトには識別や認証のための情報は含まれておらず、
|
|
|
- authenticate() によってそれらが組み込まれます。
|
|
|
+ <methodname>authenticate()</methodname> によってそれらが組み込まれます。
|
|
|
</para>
|
|
|
<para>
|
|
|
getDbSelect() メソッドを使いたくなるひとつの例としては、
|