|
|
@@ -1,6 +1,6 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<!-- Reviewed: no -->
|
|
|
-<!-- EN-Revision: 15846 -->
|
|
|
+<!-- EN-Revision: 15892 -->
|
|
|
<sect1 id="zend.auth.adapter.ldap">
|
|
|
|
|
|
<title>LDAP 認証</title>
|
|
|
@@ -10,7 +10,7 @@
|
|
|
<title>導入</title>
|
|
|
|
|
|
<para>
|
|
|
- <classname>Zend_Auth_Adapter_Ldap</classname> は、LDAP
|
|
|
+ <classname>Zend_Auth_Adapter_Ldap</classname> は、<acronym>LDAP</acronym>
|
|
|
サービスによるウェブアプリケーションの認証をサポートします。
|
|
|
ユーザ名やドメイン名の正規化や複数ドメインの認証、
|
|
|
フェイルオーバー機能などがあります。
|
|
|
@@ -18,13 +18,13 @@
|
|
|
Active Directory</ulink>
|
|
|
と
|
|
|
<ulink url="http://www.openldap.org/">OpenLDAP</ulink>
|
|
|
- で動作確認をしていますが、それ以外の LDAP
|
|
|
+ で動作確認をしていますが、それ以外の <acronym>LDAP</acronym>
|
|
|
サービスプロバイダでも動作するはずです。
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
このドキュメントで扱う内容は、
|
|
|
- <classname>Zend_Auth_Adapter_Ldap</classname> の使い方やその API、
|
|
|
+ <classname>Zend_Auth_Adapter_Ldap</classname> の使い方やその <acronym>API</acronym>、
|
|
|
使用可能なオプション、トラブルシューティングの方法、
|
|
|
そして Active Directory 用および OpenLDAP 用の設定例です。
|
|
|
</para>
|
|
|
@@ -38,7 +38,9 @@
|
|
|
<para>
|
|
|
<classname>Zend_Auth_Adapter_Ldap</classname> による認証をアプリケーションに手っ取り早く組み込むには、
|
|
|
<classname>Zend_Controller</classname> を使うかどうかにかかわらず、次のようなコードを書くことになります。
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$username = $this->_request->getParam('username');
|
|
|
$password = $this->_request->getParam('password');
|
|
|
|
|
|
@@ -71,6 +73,8 @@ if ($log_path) {
|
|
|
}
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
もちろんログを記録するかどうかは自由ですが、
|
|
|
ロガーを使用することを強く推奨します。
|
|
|
<classname>Zend_Auth_Adapter_Ldap</classname> は、皆がほしがるであろう情報をすべて
|
|
|
@@ -91,7 +95,9 @@ if ($log_path) {
|
|
|
<classname>Zend_Config_Ini</classname> では、等号
|
|
|
(<emphasis>=</emphasis>) を含む値 (以下の例では DN など)
|
|
|
はクォートしなければならないことに注意しましょう。
|
|
|
- <programlisting language="ini"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="ini"><![CDATA[
|
|
|
[production]
|
|
|
|
|
|
ldap.log_path = /tmp/ldap.log
|
|
|
@@ -114,6 +120,8 @@ ldap.server2.accountDomainNameShort = W
|
|
|
ldap.server2.accountCanonicalForm = 3
|
|
|
ldap.server2.baseDn = "CN=Users,DC=w,DC=net"
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
この設定を使用すると、<classname>Zend_Auth_Adapter_Ldap</classname>
|
|
|
はまず OpenLDAP サーバ <filename>s0.foo.net</filename> でのユーザ認証を試みます。
|
|
|
何らかの理由で認証に失敗した場合は、AD サーバ
|
|
|
@@ -147,18 +155,20 @@ ldap.server2.baseDn = "CN=Users,DC=w,DC=net"
|
|
|
ひとつあるいは複数のオプションを含む配列でなければなりません。
|
|
|
これは、<link linkend="zend.ldap"><classname>Zend_Ldap</classname></link> のオプションの
|
|
|
<emphasis>配列の配列</emphasis> であることに注意しましょう。
|
|
|
- 単一の LDAP サーバの設定のみを指定する場合でも、
|
|
|
+ 単一の <acronym>LDAP</acronym> サーバの設定のみを指定する場合でも、
|
|
|
「設定オプションの配列を配列の中に格納する」形式でなければなりません。
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
以下に、サンプルのオプションパラメータを
|
|
|
<ulink url="http://php.net/print_r"><methodname>print_r()</methodname></ulink>
|
|
|
- で出力した例を示します。これは、ふたつの LDAP サーバ
|
|
|
+ で出力した例を示します。これは、ふたつの <acronym>LDAP</acronym> サーバ
|
|
|
<filename>s0.foo.net</filename> と
|
|
|
<filename>dc1.w.net</filename> の設定を含むものです
|
|
|
- (先ほどの INI ファイルと同じ設定です)。
|
|
|
- <programlisting language="output"><![CDATA[
|
|
|
+ (先ほどの <acronym>INI</acronym> ファイルと同じ設定です)。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="output"><![CDATA[
|
|
|
Array
|
|
|
(
|
|
|
[server2] => Array
|
|
|
@@ -185,6 +195,8 @@ Array
|
|
|
|
|
|
)
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
上の各オプションで設定した内容の違いの主な理由は、AD へのバインド時にはユーザ名が
|
|
|
DN 形式である必要がないということです (以下の <emphasis>サーバのオプション</emphasis>
|
|
|
における <emphasis>bindRequiresDn</emphasis> の説明を参照ください)。
|
|
|
@@ -196,13 +208,13 @@ Array
|
|
|
<title>Distinguished Name とは?</title>
|
|
|
<para>
|
|
|
DN ("distinguished name") とは、
|
|
|
- LDAP ディレクトリ内のオブジェクトへのパスを表す文字列のことです。
|
|
|
+ <acronym>LDAP</acronym> ディレクトリ内のオブジェクトへのパスを表す文字列のことです。
|
|
|
カンマで区切られた各部分が、ノードを表す属性と値となります。
|
|
|
各部分は逆順に評価されます。たとえば、ユーザアカウント
|
|
|
<emphasis>CN=Bob Carter,CN=Users,DC=w,DC=net</emphasis> は、ディレクトリ
|
|
|
<emphasis>CN=Users,DC=w,DC=net container</emphasis> の配下に位置することになります。
|
|
|
- この構造をたどるには、ADSI Edit MMC snap-in for Active Directory や phpLDAPadmin
|
|
|
- といった LDAP ブラウザが最適です。
|
|
|
+ この構造をたどるには、<acronym>ADSI</acronym> Edit <acronym>MMC</acronym> snap-in for Active Directory や phpLDAPadmin
|
|
|
+ といった <acronym>LDAP</acronym> ブラウザが最適です。
|
|
|
</para>
|
|
|
</note>
|
|
|
|
|
|
@@ -211,8 +223,8 @@ Array
|
|
|
は基本的には何でもかまいません。しかし、<classname>Zend_Config</classname> を用いる場合は、
|
|
|
(数値インデックスではなく) 識別子を使用しなければなりません。また、
|
|
|
各ファイルフォーマットで特別な意味を持つ文字
|
|
|
- (INI のプロパティ区切り文字 '<emphasis>.</emphasis>' や
|
|
|
- XML エンティティ参照の '<emphasis>&</emphasis>' など)
|
|
|
+ (<acronym>INI</acronym> のプロパティ区切り文字 '<emphasis>.</emphasis>' や
|
|
|
+ <acronym>XML</acronym> エンティティ参照の '<emphasis>&</emphasis>' など)
|
|
|
は含まないようにしましょう。
|
|
|
</para>
|
|
|
|
|
|
@@ -229,11 +241,11 @@ Array
|
|
|
<methodname>authenticate()</methodname> メソッドがコールされると、
|
|
|
アダプタは各サーバ設定を順に処理し、内部で管理する
|
|
|
<classname>Zend_Ldap</classname> のインスタンスに設定したうえでユーザ名とパスワードを指定して
|
|
|
- <classname>Zend_Ldap::bind()</classname> メソッドをコールします。
|
|
|
+ <methodname>Zend_Ldap::bind()</methodname> メソッドをコールします。
|
|
|
<classname>Zend_Ldap</classname> クラスは、そのユーザ名がドメインつきのものであるかどうか
|
|
|
- (<emphasis>alice@foo.net</emphasis> や <emphasis>FOO\alice</emphasis> といった形式であるかどうか)
|
|
|
+ (<filename>alice@foo.net</filename> や <filename>FOO\alice</filename> といった形式であるかどうか)
|
|
|
を調べます。ドメインが指定されているけれどもそれがどのサーバのドメイン名
|
|
|
- (<emphasis>foo.net</emphasis> あるいは <emphasis>FOO</emphasis>)
|
|
|
+ (<filename>foo.net</filename> あるいは <emphasis>FOO</emphasis>)
|
|
|
とも一致しない場合は、特別な例外がスローされます。この例外は
|
|
|
<classname>Zend_Auth_Adapter_Ldap</classname> で捕捉され、
|
|
|
そのサーバを無視して次に指定されているサーバ設定を利用するようにします。
|
|
|
@@ -253,7 +265,7 @@ Array
|
|
|
<para>
|
|
|
<classname>Zend_Auth_Adapter_Ldap</classname> コンストラクタのパラメータに渡す
|
|
|
ユーザ名とパスワードは、認証に用いる情報
|
|
|
- (つまり、HTML のログインフォームでユーザが入力した情報)
|
|
|
+ (つまり、<acronym>HTML</acronym> のログインフォームでユーザが入力した情報)
|
|
|
を表します。これらは、<methodname>setUsername()</methodname> メソッドと
|
|
|
<methodname>setPassword()</methodname> メソッドで指定することもできます。
|
|
|
</para>
|
|
|
@@ -267,219 +279,226 @@ Array
|
|
|
<para>
|
|
|
<emphasis><classname>Zend_Auth_Adapter_Ldap</classname> のコンテキストにおける</emphasis>
|
|
|
サーバのオプションは次のようなものです。これらは、ほとんどそのままの形で
|
|
|
- <classname>Zend_Ldap::setOptions()</classname> に渡されます。
|
|
|
+ <methodname>Zend_Ldap::setOptions()</methodname> に渡されます。
|
|
|
+ </para>
|
|
|
|
|
|
- <table id="zend.auth.adapter.ldap.server-options.table">
|
|
|
- <title>サーバのオプション</title>
|
|
|
- <tgroup cols="2">
|
|
|
+ <table id="zend.auth.adapter.ldap.server-options.table">
|
|
|
+ <title>サーバのオプション</title>
|
|
|
+ <tgroup cols="2">
|
|
|
<thead>
|
|
|
- <row>
|
|
|
- <entry>名前</entry>
|
|
|
- <entry>説明</entry>
|
|
|
- </row>
|
|
|
+ <row>
|
|
|
+ <entry>名前</entry>
|
|
|
+ <entry>説明</entry>
|
|
|
+ </row>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
- <row>
|
|
|
- <entry><emphasis>host</emphasis></entry>
|
|
|
- <entry>
|
|
|
- このオプションが表す LDAP サーバのホスト名。必須です。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>port</emphasis></entry>
|
|
|
- <entry>
|
|
|
- LDAP サーバが待ち受けるポート。<emphasis>useSsl</emphasis> が
|
|
|
- <constant>TRUE</constant> の場合、デフォルトの <emphasis>port</emphasis>
|
|
|
- は 636 となります。<emphasis>useSsl</emphasis> が <constant>FALSE</constant>
|
|
|
- の場合、デフォルトの <emphasis>port</emphasis> は 389 です。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry>useStartTls</entry>
|
|
|
- <entry>
|
|
|
- LDAP クライアントが TLS (SSLv2) で暗号化されたトランスポートを用いるかどうか。
|
|
|
- 実運用環境では、この値を <constant>TRUE</constant> にすることを強く推奨します。
|
|
|
- そうすれば、パスワードが平文で転送されることを防ぐことができます。
|
|
|
- デフォルト値は <constant>FALSE</constant> です。
|
|
|
- というのも、別途証明書のインストールを要するサーバが多く存在するからです。
|
|
|
- <emphasis>useSsl</emphasis> と <emphasis>useStartTls</emphasis> は互いに排他的です。
|
|
|
- <emphasis>useStartTls</emphasis> オプションのほうが <emphasis>useSsl</emphasis>
|
|
|
- よりおすすめですが、中にはこの新しい仕組みをサポートしていないサーバもあります。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry>useSsl</entry>
|
|
|
- <entry>
|
|
|
- LDAP クライアントが SSL で暗号化されたトランスポートを用いるかどうか。
|
|
|
- <emphasis>useSsl</emphasis> と <emphasis>useStartTls</emphasis> は互いに排他的ですが、
|
|
|
- サーバや LDAP クライアントライブラリが対応している場合は
|
|
|
- <emphasis>useStartTls</emphasis> を使うことを推奨します。
|
|
|
- この値によって、デフォルトの <emphasis>port</emphasis>
|
|
|
- の値が変わります (上の <emphasis>port</emphasis> の説明を参照ください)。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>username</emphasis></entry>
|
|
|
- <entry>
|
|
|
- アカウントの DN を探す際に使用するアカウントの DN。
|
|
|
- バインド時のユーザ名が DN 形式であることを要求する
|
|
|
- LDAP サーバで、このオプションを使用します。
|
|
|
- <emphasis>bindRequiresDn</emphasis> が <constant>TRUE</constant>
|
|
|
- の場合はこのオプションが必須となります。
|
|
|
- このアカウントは特権アカウントである必要はありません。<emphasis>baseDn</emphasis>
|
|
|
- 配下のオブジェクトに対する読み込み権限がありさえすればいいのです
|
|
|
- (これは <emphasis>Principle of Least Privilege: 最小特権の原則</emphasis>
|
|
|
- にもかなっています)。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>password</emphasis></entry>
|
|
|
- <entry>
|
|
|
- アカウントの DN を探す際に使用するアカウントのパスワード。
|
|
|
- このオプションを省略した場合は、LDAP クライアントがアカウントの DN
|
|
|
- を探す際に "匿名バインド" を試みます。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>bindRequiresDn</emphasis></entry>
|
|
|
- <entry>
|
|
|
- LDAP サーバによっては、バインド時に使用するユーザ名が
|
|
|
- <emphasis>CN=Alice Baker,OU=Sales,DC=foo,DC=net</emphasis>
|
|
|
- のような DN 形式でなければならないものもあります (基本的に、AD
|
|
|
- <emphasis>以外</emphasis> のすべてのサーバがそうです)。
|
|
|
- このオプションが <constant>TRUE</constant> の場合、
|
|
|
- もし認証対象のユーザ名が DN 形式でなければ
|
|
|
- <classname>Zend_Ldap</classname> に自動的に DN を取得させ、
|
|
|
- その DN で再度バインドさせるようにします。
|
|
|
- デフォルト値は <constant>FALSE</constant> です。現時点で、
|
|
|
- バインド時のユーザ名が DN 形式で <emphasis>なくてもよい</emphasis>
|
|
|
- サーバとして知られているのは Microsoft Active Directory Server (ADS)
|
|
|
- のみです。したがって、AD を使用する場合はこのオプションを
|
|
|
- <constant>FALSE</constant> にしてもかまいません (そうするべきです。
|
|
|
- DN を取得するために、サーバとの余計なやりとりが発生してしまうわけですから)。
|
|
|
- それ以外の場合 (OpenLDAP など) は、このオプションを
|
|
|
- <constant>TRUE</constant> にしなければなりません。このオプションは、
|
|
|
- アカウントを検索する際に使用する
|
|
|
- <emphasis>acountFilterFormat</emphasis>
|
|
|
- のデフォルト値にも影響を及ぼします。
|
|
|
- <emphasis>accountFilterFormat</emphasis>
|
|
|
- オプションも参照ください。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>baseDn</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 認証対象となるアカウントが配置されている場所の DN。このオプションは必須です。
|
|
|
- 正しい <emphasis>baseDn</emphasis> の値がよくわからない場合は、
|
|
|
- ユーザの DNS ドメインを <emphasis>DC=</emphasis>
|
|
|
- コンポーネントで表したものと考えれば差し支えないでしょう。
|
|
|
- たとえば、ユーザ名が <emphasis>alice@foo.net</emphasis> である場合は
|
|
|
- <emphasis>baseDn</emphasis> を <emphasis>DC=foo,DC=net</emphasis>
|
|
|
- とすれば動作するでしょう。しかし、より正確な場所
|
|
|
- (<emphasis>OU=Sales,DC=foo,DC=net</emphasis> など)
|
|
|
- を指定したほうが効率的です。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountCanonicalForm</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 2、3 あるいは 4 を指定し、認証に成功した後のアカウント名の正規化方式を指定します。
|
|
|
- それぞれの値の意味は次のとおりです。2 は伝統的なユーザ名 (例:
|
|
|
- <emphasis>alice</emphasis>)、3 はバックスラッシュ形式の名前 (例: <emphasis>FOO\alice</emphasis>)
|
|
|
- そして 4 はプリンシパル形式のユーザ名 (例: <emphasis>alice@foo.net</emphasis>)
|
|
|
- となります。デフォルト値は 4 (例: <emphasis>alice@foo.net</emphasis>) です。
|
|
|
- たとえば 3 を指定したとすると、<classname>Zend_Auth_Result::getIdentity()</classname>
|
|
|
- (<classname>Zend_Auth</classname> を使う場合は <classname>Zend_Auth::getIdentity()</classname>)
|
|
|
- の返す識別子は常に <emphasis>FOO\alice</emphasis> となります。これは、Alice が入力した内容が
|
|
|
- <emphasis>alice</emphasis>、<emphasis>alice@foo.net</emphasis>、<emphasis>FOO\alice</emphasis>、
|
|
|
- <emphasis>FoO\aLicE</emphasis>、<emphasis>foo.net\alice</emphasis>
|
|
|
- などのいずれであろうが同じです。詳細は、<classname>Zend_Ldap</classname>
|
|
|
- のドキュメントの <emphasis>アカウント名の正規化</emphasis>
|
|
|
- のセクションを参照ください。複数のサーバのオプションを設定する場合は、すべてのサーバで
|
|
|
- <emphasis>accountCanonicalForm</emphasis>
|
|
|
- を同じにしておくことを推奨します (必須ではありません)。
|
|
|
- そうすれば、結果のユーザ名はいつでも同じ形式に正規化されることになります
|
|
|
- (もし AD サーバでは <emphasis>EXAMPLE\username</emphasis>、OpenLDAP サーバでは
|
|
|
- <emphasis>username@example.com</emphasis> を返すようになっていれば、
|
|
|
- アプリケーション側のロジックが不格好になります)。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountDomainName</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 対象となる LDAP サーバの FQDN ドメイン
|
|
|
- (例 <filename>example.com</filename>)。
|
|
|
- このオプションは、名前を正規化する際に使用します。
|
|
|
- バインド時に、ユーザが指定したユーザ名を必要に応じて変換します。
|
|
|
- 指定したユーザ名がそのサーバに存在するかどうかを調べる際にも使用します
|
|
|
- (<emphasis>accountDomainName</emphasis> が <emphasis>foo.net</emphasis>
|
|
|
- でユーザが <emphasis>bob@bar.net</emphasis> を入力した場合、
|
|
|
- サーバへの問い合わせを行わず、結果は失敗となります)。
|
|
|
- このオプションは必須ではありませんが、もし指定していなければ
|
|
|
- プリンシパル形式のユーザ名 (例 <emphasis>alice@foo.net</emphasis>)
|
|
|
- はサポートされません。このオプションを指定しておくことを推奨します。
|
|
|
- プリンシパル形式のユーザ名が必要となる場面は数多くあるからです。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountDomainNameShort</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 対象となる LDAP サーバの '短い' ドメイン
|
|
|
- (例 <emphasis>FOO</emphasis>)。
|
|
|
- <emphasis>accountDomainName</emphasis> と
|
|
|
- <emphasis>accountDomainNameShort</emphasis>
|
|
|
- は一対一対応となることに注意しましょう。このオプションは
|
|
|
- Windows ネットワークの NetBIOS ドメイン名として用いられますが、
|
|
|
- AD 以外のサーバで用いられることもあります
|
|
|
- (複数のサーバオプションでバックスラッシュ形式の
|
|
|
- <emphasis>accountCanonicalForm</emphasis> を使用する場合など)。
|
|
|
- このオプションは必須ではありませんが、もし指定していなければ
|
|
|
- バックスラッシュ形式のユーザ名 (例 <emphasis>FOO\alice</emphasis>)
|
|
|
- はサポートされません。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountFilterFormat</emphasis></entry>
|
|
|
- <entry>
|
|
|
- アカウントを検索する際に使用する LDAP 検索フィルタ。
|
|
|
- この文字列は
|
|
|
- <ulink url="http://php.net/printf"><methodname>printf()</methodname></ulink>
|
|
|
- 形式のものとなり、ユーザ名を表す '<emphasis>%s</emphasis>'
|
|
|
- をひとつ含む必要があります。デフォルト値は
|
|
|
- '<emphasis>(&(objectClass=user)(sAMAccountName=%s))</emphasis>' です。
|
|
|
- ただし、<emphasis>bindRequiresDn</emphasis> が <constant>TRUE</constant>
|
|
|
- の場合のデフォルト値は
|
|
|
- '<emphasis>(&(objectClass=posixAccount)(uid=%s))</emphasis>'
|
|
|
- となります。たとえば、何らかの理由で AD 環境で
|
|
|
- <emphasis>bindRequiresDn = true</emphasis> を使いたい場合は
|
|
|
- <emphasis>accountFilterFormat = '(&(objectClass=user)(sAMAccountName=%s))</emphasis>'
|
|
|
- と設定する必要があります。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>optReferrals</emphasis></entry>
|
|
|
- <entry>
|
|
|
- <constant>TRUE</constant> に設定すると、
|
|
|
- 参照先を追跡するよう LDAP クライアントに指示します。
|
|
|
- デフォルト値は <constant>FALSE</constant> です。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>host</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ このオプションが表す <acronym>LDAP</acronym> サーバのホスト名。必須です。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>port</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ <acronym>LDAP</acronym> サーバが待ち受けるポート。<emphasis>useSsl</emphasis> が
|
|
|
+ <constant>TRUE</constant> の場合、デフォルトの <emphasis>port</emphasis>
|
|
|
+ は 636 となります。<emphasis>useSsl</emphasis> が <constant>FALSE</constant>
|
|
|
+ の場合、デフォルトの <emphasis>port</emphasis> は 389 です。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>useStartTls</entry>
|
|
|
+ <entry>
|
|
|
+ <acronym>LDAP</acronym> クライアントが <acronym>TLS</acronym> (SSLv2)
|
|
|
+ で暗号化されたトランスポートを用いるかどうか。
|
|
|
+ 実運用環境では、この値を <constant>TRUE</constant> にすることを強く推奨します。
|
|
|
+ そうすれば、パスワードが平文で転送されることを防ぐことができます。
|
|
|
+ デフォルト値は <constant>FALSE</constant> です。
|
|
|
+ というのも、別途証明書のインストールを要するサーバが多く存在するからです。
|
|
|
+ <emphasis>useSsl</emphasis> と <emphasis>useStartTls</emphasis> は互いに排他的です。
|
|
|
+ <emphasis>useStartTls</emphasis> オプションのほうが <emphasis>useSsl</emphasis>
|
|
|
+ よりおすすめですが、中にはこの新しい仕組みをサポートしていないサーバもあります。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>useSsl</entry>
|
|
|
+ <entry>
|
|
|
+ <acronym>LDAP</acronym> クライアントが
|
|
|
+ <acronym>SSL</acronym> で暗号化されたトランスポートを用いるかどうか。
|
|
|
+ <emphasis>useSsl</emphasis> と <emphasis>useStartTls</emphasis> は互いに排他的ですが、
|
|
|
+ サーバや <acronym>LDAP</acronym> クライアントライブラリが対応している場合は
|
|
|
+ <emphasis>useStartTls</emphasis> を使うことを推奨します。
|
|
|
+ この値によって、デフォルトの <emphasis>port</emphasis>
|
|
|
+ の値が変わります (上の <emphasis>port</emphasis> の説明を参照ください)。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>username</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ アカウントの DN を探す際に使用するアカウントの DN。
|
|
|
+ バインド時のユーザ名が DN 形式であることを要求する
|
|
|
+ <acronym>LDAP</acronym> サーバで、このオプションを使用します。
|
|
|
+ <emphasis>bindRequiresDn</emphasis> が <constant>TRUE</constant>
|
|
|
+ の場合はこのオプションが必須となります。
|
|
|
+ このアカウントは特権アカウントである必要はありません。<emphasis>baseDn</emphasis>
|
|
|
+ 配下のオブジェクトに対する読み込み権限がありさえすればいいのです
|
|
|
+ (これは <emphasis>Principle of Least Privilege: 最小特権の原則</emphasis>
|
|
|
+ にもかなっています)。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>password</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ アカウントの DN を探す際に使用するアカウントのパスワード。
|
|
|
+ このオプションを省略した場合は、<acronym>LDAP</acronym> クライアントがアカウントの DN
|
|
|
+ を探す際に "匿名バインド" を試みます。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>bindRequiresDn</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ <acronym>LDAP</acronym> サーバによっては、バインド時に使用するユーザ名が
|
|
|
+ <emphasis>CN=Alice Baker,OU=Sales,DC=foo,DC=net</emphasis>
|
|
|
+ のような DN 形式でなければならないものもあります (基本的に、AD
|
|
|
+ <emphasis>以外</emphasis> のすべてのサーバがそうです)。
|
|
|
+ このオプションが <constant>TRUE</constant> の場合、
|
|
|
+ もし認証対象のユーザ名が DN 形式でなければ
|
|
|
+ <classname>Zend_Ldap</classname> に自動的に DN を取得させ、
|
|
|
+ その DN で再度バインドさせるようにします。
|
|
|
+ デフォルト値は <constant>FALSE</constant> です。現時点で、
|
|
|
+ バインド時のユーザ名が DN 形式で <emphasis>なくてもよい</emphasis>
|
|
|
+ サーバとして知られているのは Microsoft Active Directory Server (ADS)
|
|
|
+ のみです。したがって、AD を使用する場合はこのオプションを
|
|
|
+ <constant>FALSE</constant> にしてもかまいません (そうするべきです。
|
|
|
+ DN を取得するために、サーバとの余計なやりとりが発生してしまうわけですから)。
|
|
|
+ それ以外の場合 (OpenLDAP など) は、このオプションを
|
|
|
+ <constant>TRUE</constant> にしなければなりません。このオプションは、
|
|
|
+ アカウントを検索する際に使用する
|
|
|
+ <emphasis>acountFilterFormat</emphasis>
|
|
|
+ のデフォルト値にも影響を及ぼします。
|
|
|
+ <emphasis>accountFilterFormat</emphasis>
|
|
|
+ オプションも参照ください。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>baseDn</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 認証対象となるアカウントが配置されている場所の DN。このオプションは必須です。
|
|
|
+ 正しい <emphasis>baseDn</emphasis> の値がよくわからない場合は、
|
|
|
+ ユーザの <acronym>DNS</acronym> ドメインを <emphasis>DC=</emphasis>
|
|
|
+ コンポーネントで表したものと考えれば差し支えないでしょう。
|
|
|
+ たとえば、ユーザ名が <filename>alice@foo.net</filename> である場合は
|
|
|
+ <emphasis>baseDn</emphasis> を <emphasis>DC=foo,DC=net</emphasis>
|
|
|
+ とすれば動作するでしょう。しかし、より正確な場所
|
|
|
+ (<emphasis>OU=Sales,DC=foo,DC=net</emphasis> など)
|
|
|
+ を指定したほうが効率的です。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountCanonicalForm</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 2、3 あるいは 4 を指定し、認証に成功した後のアカウント名の正規化方式を指定します。
|
|
|
+ それぞれの値の意味は次のとおりです。2 は伝統的なユーザ名 (例:
|
|
|
+ <emphasis>alice</emphasis>)、3 はバックスラッシュ形式の名前
|
|
|
+ (例: <filename>FOO\alice</filename>)
|
|
|
+ そして 4 はプリンシパル形式のユーザ名 (例: <filename>alice@foo.net</filename>)
|
|
|
+ となります。デフォルト値は 4 (例: <filename>alice@foo.net</filename>) です。
|
|
|
+ たとえば 3 を指定したとすると、
|
|
|
+ <classname>Zend_Auth_Result::getIdentity()</classname>
|
|
|
+ (<classname>Zend_Auth</classname> を使う場合は
|
|
|
+ <classname>Zend_Auth::getIdentity()</classname>)
|
|
|
+ の返す識別子は常に <emphasis>FOO\alice</emphasis> となります。
|
|
|
+ これは、Alice が入力した内容が <filename>alice</filename>、
|
|
|
+ <filename>alice@foo.net</filename>、<filename>FOO\alice</filename>、
|
|
|
+ <filename>FoO\aLicE</filename>、<filename>foo.net\alice</filename>
|
|
|
+ などのいずれであろうが同じです。詳細は、<classname>Zend_Ldap</classname>
|
|
|
+ のドキュメントの <emphasis>アカウント名の正規化</emphasis>
|
|
|
+ のセクションを参照ください。複数のサーバのオプションを設定する場合は、
|
|
|
+ すべてのサーバで <emphasis>accountCanonicalForm</emphasis>
|
|
|
+ を同じにしておくことを推奨します (必須ではありません)。
|
|
|
+ そうすれば、結果のユーザ名はいつでも同じ形式に正規化されることになります
|
|
|
+ (もし AD サーバでは <filename>EXAMPLE\username</filename>、OpenLDAP サーバでは
|
|
|
+ <filename>username@example.com</filename> を返すようになっていれば、
|
|
|
+ アプリケーション側のロジックが不格好になります)。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountDomainName</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 対象となる <acronym>LDAP</acronym> サーバの FQDN ドメイン
|
|
|
+ (例 <filename>example.com</filename>)。
|
|
|
+ このオプションは、名前を正規化する際に使用します。
|
|
|
+ バインド時に、ユーザが指定したユーザ名を必要に応じて変換します。
|
|
|
+ 指定したユーザ名がそのサーバに存在するかどうかを調べる際にも使用します
|
|
|
+ (<emphasis>accountDomainName</emphasis> が <emphasis>foo.net</emphasis>
|
|
|
+ でユーザが <emphasis>bob@bar.net</emphasis> を入力した場合、
|
|
|
+ サーバへの問い合わせを行わず、結果は失敗となります)。
|
|
|
+ このオプションは必須ではありませんが、もし指定していなければ
|
|
|
+ プリンシパル形式のユーザ名 (例 <filename>alice@foo.net</filename>)
|
|
|
+ はサポートされません。このオプションを指定しておくことを推奨します。
|
|
|
+ プリンシパル形式のユーザ名が必要となる場面は数多くあるからです。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountDomainNameShort</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 対象となる <acronym>LDAP</acronym> サーバの '短い' ドメイン
|
|
|
+ (例 <emphasis>FOO</emphasis>)。
|
|
|
+ <emphasis>accountDomainName</emphasis> と
|
|
|
+ <emphasis>accountDomainNameShort</emphasis>
|
|
|
+ は一対一対応となることに注意しましょう。このオプションは
|
|
|
+ Windows ネットワークの NetBIOS ドメイン名として用いられますが、
|
|
|
+ AD 以外のサーバで用いられることもあります
|
|
|
+ (複数のサーバオプションでバックスラッシュ形式の
|
|
|
+ <emphasis>accountCanonicalForm</emphasis> を使用する場合など)。
|
|
|
+ このオプションは必須ではありませんが、もし指定していなければ
|
|
|
+ バックスラッシュ形式のユーザ名 (例 <filename>FOO\alice</filename>)
|
|
|
+ はサポートされません。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountFilterFormat</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ アカウントを検索する際に使用する <acronym>LDAP</acronym> 検索フィルタ。
|
|
|
+ この文字列は
|
|
|
+ <ulink url="http://php.net/printf"><methodname>printf()</methodname></ulink>
|
|
|
+ 形式のものとなり、ユーザ名を表す '<emphasis>%s</emphasis>'
|
|
|
+ をひとつ含む必要があります。デフォルト値は
|
|
|
+ '<emphasis>(&(objectClass=user)(sAMAccountName=%s))</emphasis>' です。
|
|
|
+ ただし、<emphasis>bindRequiresDn</emphasis> が <constant>TRUE</constant>
|
|
|
+ の場合のデフォルト値は
|
|
|
+ '<emphasis>(&(objectClass=posixAccount)(uid=%s))</emphasis>'
|
|
|
+ となります。たとえば、何らかの理由で AD 環境で
|
|
|
+ <emphasis>bindRequiresDn = true</emphasis> を使いたい場合は
|
|
|
+ <emphasis>accountFilterFormat = '(&(objectClass=user)(sAMAccountName=%s))</emphasis>'
|
|
|
+ と設定する必要があります。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>optReferrals</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ <constant>TRUE</constant> に設定すると、
|
|
|
+ 参照先を追跡するよう <acronym>LDAP</acronym> クライアントに指示します。
|
|
|
+ デフォルト値は <constant>FALSE</constant> です。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
</tbody>
|
|
|
- </tgroup>
|
|
|
- </table>
|
|
|
- </para>
|
|
|
+ </tgroup>
|
|
|
+ </table>
|
|
|
|
|
|
<note>
|
|
|
<para>
|
|
|
<emphasis>useStartTls = true</emphasis> あるいは
|
|
|
- <emphasis>useSsl = true</emphasis> としていると、LDAP クライアント側で
|
|
|
+ <emphasis>useSsl = true</emphasis> としていると、<acronym>LDAP</acronym> クライアント側で
|
|
|
「サーバの証明書を検証できない」というエラーが発生することに気づかれるかもしれません。
|
|
|
- PHP の LDAP 拡張モジュールは OpenLDAP クライアントライブラリと密接につながっているので、
|
|
|
+ <acronym>PHP</acronym> の <acronym>LDAP</acronym> 拡張モジュールは
|
|
|
+ OpenLDAP クライアントライブラリと密接につながっているので、
|
|
|
この問題を解決するには OpenLDAP クライアントの <filename>ldap.conf</filename> で
|
|
|
"<emphasis>TLS_REQCERT never</emphasis>" を設定 (そしてウェブサーバを再起動)
|
|
|
して OpenLDAP クライアントライブラリがサーバを信頼するようにします。
|
|
|
- もしいわゆる「なりすまし」が心配なら、
|
|
|
- LDAP サーバのルート証明書をエクスポートしてそれをウェブサーバに配置すれば、
|
|
|
+ もしいわゆる「なりすまし」が心配なら、<acronym>LDAP</acronym>
|
|
|
+ サーバのルート証明書をエクスポートしてそれをウェブサーバに配置すれば、
|
|
|
OpenLDAP クライアントがサーバを検証できるようになります。
|
|
|
</para>
|
|
|
</note>
|
|
|
@@ -493,44 +512,47 @@ Array
|
|
|
<para>
|
|
|
<classname>Zend_Auth_Adapter_Ldap</classname> は、<methodname>authenticate()</methodname>
|
|
|
メソッド内でのデバッグ情報を収集します。この情報は、<classname>Zend_Auth_Result</classname>
|
|
|
- オブジェクト内にメッセージとして保存されます。<classname>Zend_Auth_Result::getMessages()</classname>
|
|
|
+ オブジェクト内にメッセージとして保存されます。
|
|
|
+ <methodname>Zend_Auth_Result::getMessages()</methodname>
|
|
|
が返す配列は次のような形式になります。
|
|
|
+ </para>
|
|
|
|
|
|
- <table id="zend.auth.adapter.ldap.debugging.table">
|
|
|
- <title>デバッグメッセージ</title>
|
|
|
- <tgroup cols="2">
|
|
|
+ <table id="zend.auth.adapter.ldap.debugging.table">
|
|
|
+ <title>デバッグメッセージ</title>
|
|
|
+ <tgroup cols="2">
|
|
|
<thead>
|
|
|
- <row>
|
|
|
- <entry>メッセージ配列の添字</entry>
|
|
|
- <entry>説明</entry>
|
|
|
- </row>
|
|
|
+ <row>
|
|
|
+ <entry>メッセージ配列の添字</entry>
|
|
|
+ <entry>説明</entry>
|
|
|
+ </row>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
- <row>
|
|
|
- <entry>0</entry>
|
|
|
- <entry>
|
|
|
- ユーザ向けの表示に適した、全般的なメッセージ (認証に失敗したなど)。
|
|
|
- 認証に成功した場合は、この文字列は空となります。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry>1</entry>
|
|
|
- <entry>
|
|
|
- より詳細なエラーメッセージ。ユーザ向けに表示するには適しませんが、
|
|
|
- サーバ管理者向けには記録しておくべき内容です。
|
|
|
- 認証に成功した場合は、この文字列は空となります。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry>2 以降</entry>
|
|
|
- <entry>
|
|
|
- すべてのログメッセージが、インデックス 2 以降に順に格納されます。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
+ <row>
|
|
|
+ <entry>0</entry>
|
|
|
+ <entry>
|
|
|
+ ユーザ向けの表示に適した、全般的なメッセージ (認証に失敗したなど)。
|
|
|
+ 認証に成功した場合は、この文字列は空となります。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>1</entry>
|
|
|
+ <entry>
|
|
|
+ より詳細なエラーメッセージ。ユーザ向けに表示するには適しませんが、
|
|
|
+ サーバ管理者向けには記録しておくべき内容です。
|
|
|
+ 認証に成功した場合は、この文字列は空となります。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>2 以降</entry>
|
|
|
+ <entry>
|
|
|
+ すべてのログメッセージが、インデックス 2 以降に順に格納されます。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
</tbody>
|
|
|
- </tgroup>
|
|
|
- </table>
|
|
|
+ </tgroup>
|
|
|
+ </table>
|
|
|
|
|
|
+ <para>
|
|
|
実際に使用する上では、まずインデックス 0 の内容はユーザ向けに表示することになります
|
|
|
(FlashMessenger ヘルパーなどを使用します)。そしてインデックス 1 はログに記録し、
|
|
|
デバッグ情報が必要ならインデックス 2 以降も同様に記録します
|
|
|
@@ -548,81 +570,81 @@ Array
|
|
|
<title>Active Directory 用のオプション</title>
|
|
|
|
|
|
<para>
|
|
|
- ADS 用のオプションとして注目すべきものは次のとおりです。
|
|
|
+ <acronym>ADS</acronym> 用のオプションとして注目すべきものは次のとおりです。
|
|
|
+ </para>
|
|
|
|
|
|
- <table id="zend.auth.adapter.ldap.options-common-server-specific.active-directory.table">
|
|
|
- <title>Active Directory 用のオプション</title>
|
|
|
- <tgroup cols="2">
|
|
|
+ <table id="zend.auth.adapter.ldap.options-common-server-specific.active-directory.table">
|
|
|
+ <title>Active Directory 用のオプション</title>
|
|
|
+ <tgroup cols="2">
|
|
|
<thead>
|
|
|
- <row>
|
|
|
- <entry>名前</entry>
|
|
|
- <entry>補足説明</entry>
|
|
|
- </row>
|
|
|
+ <row>
|
|
|
+ <entry>名前</entry>
|
|
|
+ <entry>補足説明</entry>
|
|
|
+ </row>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
- <row>
|
|
|
- <entry><emphasis>host</emphasis></entry>
|
|
|
- <entry>
|
|
|
- すべてのサーバでこのオプションは必須です。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>useStartTls</emphasis></entry>
|
|
|
- <entry>
|
|
|
- セキュリティの観点からは、これは <constant>TRUE</constant> にしておくべきです。
|
|
|
- この場合、サーバに証明書をインストールしておく必要があります。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>useSsl</emphasis></entry>
|
|
|
- <entry>
|
|
|
- <emphasis>useStartTls</emphasis> の代替として用いられます (上を参照ください)。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>baseDn</emphasis></entry>
|
|
|
- <entry>
|
|
|
- すべてのサーバでこのオプションは必須です。デフォルトの AD では
|
|
|
- すべてのユーザアカウントが <emphasis>Users</emphasis> コンテナ
|
|
|
- (たとえば <emphasis>CN=Users,DC=foo,DC=net</emphasis>) の配下におかれますが、
|
|
|
- もっと長い組織になることもあるので共通のデフォルトはありません。
|
|
|
- AD の管理者に問い合わせて、アプリケーションのアカウントでどんな
|
|
|
- DN を使用したらよいのかを確認しましょう。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountCanonicalForm</emphasis></entry>
|
|
|
- <entry>
|
|
|
- ほとんどの場合は 3 を指定してバックスラッシュ形式の名前 (例
|
|
|
- <emphasis>FOO\alice</emphasis>) を使用することになるでしょう。
|
|
|
- これは Windows ユーザにとってもっともなじみ深い形式です。修飾されていない形式である 2
|
|
|
- (例 <emphasis>alice</emphasis>) を使っては <emphasis>いけません</emphasis>。
|
|
|
- これは、他の信頼済みドメインに属する同じユーザ名のユーザにも
|
|
|
- アプリケーションへのアクセスを許可してしまうことになるからです
|
|
|
- (たとえば <emphasis>BAR\alice</emphasis> と <emphasis>FOO\alice</emphasis>
|
|
|
- は同じユーザという扱いになります)。以下の注意も参照ください。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountDomainName</emphasis></entry>
|
|
|
- <entry>
|
|
|
- これは AD には必須です。<emphasis>accountCanonicalForm</emphasis>
|
|
|
- が 2 の場合は不要ですが、何度も言うようにこれはおすすめしません。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountDomainNameShort</emphasis></entry>
|
|
|
- <entry>
|
|
|
- ユーザが属するドメインの NetBIOS 名で、AD サーバの認証対象となります。
|
|
|
- これは、バックスラッシュ形式の
|
|
|
- <emphasis>accountCanonicalForm</emphasis>
|
|
|
- を使用する場合には必須です。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>host</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ すべてのサーバでこのオプションは必須です。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>useStartTls</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ セキュリティの観点からは、これは <constant>TRUE</constant> にしておくべきです。
|
|
|
+ この場合、サーバに証明書をインストールしておく必要があります。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>useSsl</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ <emphasis>useStartTls</emphasis> の代替として用いられます (上を参照ください)。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>baseDn</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ すべてのサーバでこのオプションは必須です。デフォルトの AD では
|
|
|
+ すべてのユーザアカウントが <emphasis>Users</emphasis> コンテナ
|
|
|
+ (たとえば <emphasis>CN=Users,DC=foo,DC=net</emphasis>) の配下におかれますが、
|
|
|
+ もっと長い組織になることもあるので共通のデフォルトはありません。
|
|
|
+ AD の管理者に問い合わせて、アプリケーションのアカウントでどんな
|
|
|
+ DN を使用したらよいのかを確認しましょう。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountCanonicalForm</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ ほとんどの場合は 3 を指定してバックスラッシュ形式の名前 (例
|
|
|
+ <emphasis>FOO\alice</emphasis>) を使用することになるでしょう。
|
|
|
+ これは Windows ユーザにとってもっともなじみ深い形式です。修飾されていない形式である 2
|
|
|
+ (例 <emphasis>alice</emphasis>) を使っては <emphasis>いけません</emphasis>。
|
|
|
+ これは、他の信頼済みドメインに属する同じユーザ名のユーザにも
|
|
|
+ アプリケーションへのアクセスを許可してしまうことになるからです
|
|
|
+ (たとえば <emphasis>BAR\alice</emphasis> と <emphasis>FOO\alice</emphasis>
|
|
|
+ は同じユーザという扱いになります)。以下の注意も参照ください。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountDomainName</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ これは AD には必須です。<emphasis>accountCanonicalForm</emphasis>
|
|
|
+ が 2 の場合は不要ですが、何度も言うようにこれはおすすめしません。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountDomainNameShort</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ ユーザが属するドメインの NetBIOS 名で、AD サーバの認証対象となります。
|
|
|
+ これは、バックスラッシュ形式の
|
|
|
+ <emphasis>accountCanonicalForm</emphasis>
|
|
|
+ を使用する場合には必須です。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
</tbody>
|
|
|
- </tgroup>
|
|
|
- </table>
|
|
|
- </para>
|
|
|
+ </tgroup>
|
|
|
+ </table>
|
|
|
|
|
|
<note>
|
|
|
<para>
|
|
|
@@ -645,103 +667,103 @@ Array
|
|
|
|
|
|
<para>
|
|
|
OpenLDAP、あるいは posixAccount 形式のスキーマを用いる一般的な
|
|
|
- LDAP サーバ用のオプションとして注目すべきものは次のとおりです。
|
|
|
+ <acronym>LDAP</acronym> サーバ用のオプションとして注目すべきものは次のとおりです。
|
|
|
+ </para>
|
|
|
|
|
|
- <table id="zend.auth.adapter.ldap.options-common-server-specific.openldap.table">
|
|
|
- <title>OpenLDAP 用のオプション</title>
|
|
|
- <tgroup cols="2">
|
|
|
+ <table id="zend.auth.adapter.ldap.options-common-server-specific.openldap.table">
|
|
|
+ <title>OpenLDAP 用のオプション</title>
|
|
|
+ <tgroup cols="2">
|
|
|
<thead>
|
|
|
- <row>
|
|
|
- <entry>名前</entry>
|
|
|
- <entry>補足説明</entry>
|
|
|
- </row>
|
|
|
+ <row>
|
|
|
+ <entry>名前</entry>
|
|
|
+ <entry>補足説明</entry>
|
|
|
+ </row>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
- <row>
|
|
|
- <entry><emphasis>host</emphasis></entry>
|
|
|
- <entry>
|
|
|
- すべてのサーバでこのオプションは必須です。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>useStartTls</emphasis></entry>
|
|
|
- <entry>
|
|
|
- セキュリティの観点からは、これは <constant>TRUE</constant> にしておくべきです。
|
|
|
- この場合、サーバに証明書をインストールしておく必要があります。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry>
|
|
|
- <emphasis>useStartTls</emphasis> の代替として用いられます (上を参照ください)。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>username</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 必須、かつ DN である必要があります。OpenLDAP のバインド時には、
|
|
|
- ユーザ名が DN 形式であることが必須だからです。
|
|
|
- 特権アカウント以外を使用するようにしましょう。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>password</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 上のユーザ名に対応するパスワード。しかし、
|
|
|
- 匿名バインドによるユーザ検索を
|
|
|
- LDAP サーバがサポートしている場合には省略することもできます。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>bindRequiresDn</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 必須、かつ <constant>TRUE</constant> である必要があります。
|
|
|
- OpenLDAP のバインド時には、ユーザ名が DN 形式であることが必須だからです。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>baseDn</emphasis></entry>
|
|
|
- <entry>
|
|
|
- すべてのサーバでこのオプションは必須です。
|
|
|
- 認証対象となるアカウントが位置する DN を指すようにします。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountCanonicalForm</emphasis></entry>
|
|
|
- <entry>
|
|
|
- オプションで、デフォルト値は 4 (<emphasis>alice@foo.net</emphasis>
|
|
|
- のようなプリンシパル形式) です。これは、ユーザがバックスラッシュ形式の名前
|
|
|
- (<emphasis>FOO\alice</emphasis> など)
|
|
|
- を使用する場合には望ましくありません。バックスラッシュ形式の名前の場合は
|
|
|
- 3 を使用します。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountDomainName</emphasis></entry>
|
|
|
- <entry>
|
|
|
- 必須です。<emphasis>accountCanonicalForm</emphasis>
|
|
|
- が 2 の場合は不要ですが、これはおすすめしません。
|
|
|
- </entry>
|
|
|
- </row>
|
|
|
- <row>
|
|
|
- <entry><emphasis>accountDomainNameShort</emphasis></entry>
|
|
|
- <entry>
|
|
|
- AD とともに使用するのでなければこれは必須ではありません。
|
|
|
- それ以外の場合、もし
|
|
|
- <emphasis>accountCanonicalForm</emphasis> 3 を使用するのなら
|
|
|
- このオプションは必須で、
|
|
|
- <emphasis>accountDomainName</emphasis>
|
|
|
- に対応する短縮名を指定しなければなりません
|
|
|
- (たとえば <emphasis>accountDomainName</emphasis> が
|
|
|
- <emphasis>foo.net</emphasis> なら
|
|
|
- <emphasis>accountDomainNameShort</emphasis>
|
|
|
- の適切な値は <emphasis>FOO</emphasis> となるでしょう)。
|
|
|
- </entry>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>host</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ すべてのサーバでこのオプションは必須です。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>useStartTls</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ セキュリティの観点からは、これは <constant>TRUE</constant> にしておくべきです。
|
|
|
+ この場合、サーバに証明書をインストールしておく必要があります。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>useSsl</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ <emphasis>useStartTls</emphasis> の代替として用いられます (上を参照ください)。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>username</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 必須、かつ DN である必要があります。OpenLDAP のバインド時には、
|
|
|
+ ユーザ名が DN 形式であることが必須だからです。
|
|
|
+ 特権アカウント以外を使用するようにしましょう。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>password</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 上のユーザ名に対応するパスワード。しかし、
|
|
|
+ 匿名バインドによるユーザ検索を
|
|
|
+ <acronym>LDAP</acronym> サーバがサポートしている場合には省略することもできます。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>bindRequiresDn</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 必須、かつ <constant>TRUE</constant> である必要があります。
|
|
|
+ OpenLDAP のバインド時には、ユーザ名が DN 形式であることが必須だからです。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>baseDn</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ すべてのサーバでこのオプションは必須です。
|
|
|
+ 認証対象となるアカウントが位置する DN を指すようにします。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountCanonicalForm</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ オプションで、デフォルト値は 4 (<filename>alice@foo.net</filename>
|
|
|
+ のようなプリンシパル形式) です。これは、ユーザがバックスラッシュ形式の名前
|
|
|
+ (<filename>FOO\alice</filename> など)
|
|
|
+ を使用する場合には望ましくありません。バックスラッシュ形式の名前の場合は
|
|
|
+ 3 を使用します。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountDomainName</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ 必須です。<emphasis>accountCanonicalForm</emphasis>
|
|
|
+ が 2 の場合は不要ですが、これはおすすめしません。
|
|
|
+ </entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>accountDomainNameShort</emphasis></entry>
|
|
|
+ <entry>
|
|
|
+ AD とともに使用するのでなければこれは必須ではありません。
|
|
|
+ それ以外の場合、もし
|
|
|
+ <emphasis>accountCanonicalForm</emphasis> 3 を使用するのなら
|
|
|
+ このオプションは必須で、
|
|
|
+ <emphasis>accountDomainName</emphasis>
|
|
|
+ に対応する短縮名を指定しなければなりません
|
|
|
+ (たとえば <emphasis>accountDomainName</emphasis> が
|
|
|
+ <filename>foo.net</filename> なら
|
|
|
+ <emphasis>accountDomainNameShort</emphasis>
|
|
|
+ の適切な値は <emphasis>FOO</emphasis> となるでしょう)。
|
|
|
+ </entry>
|
|
|
</row>
|
|
|
</tbody>
|
|
|
- </tgroup>
|
|
|
- </table>
|
|
|
-
|
|
|
- </para>
|
|
|
+ </tgroup>
|
|
|
+ </table>
|
|
|
|
|
|
</sect3>
|
|
|
|