20.13. パススルー認証の使用
パススルー認証 (PTA) は、ある Red Hat Directory Server インスタンスがバインド要求を認証できるメカニズムです。パススルー認証は PTA プラグインを介して実装されます。有効にすると、Directory Server インスタンスは、ローカルデータベースに保管されないエントリーの単純なバインド操作 (パスワードベース) を受け入れます。
Directory Server は、PTA を使用して、Directory Server の別のインスタンスでユーザーおよび設定ディレクトリーを管理します。
最初のインスタンスは、別の Directory Server へのバインド要求を通過する PTA Directory Server として機能します。2 つ目のインスタンスは、認証ディレクトリーとして機能します。これは、エントリーが含まれるサーバーであり、要求しているクライアントのバインド認証情報を検証します。
パススルーサブツリー は、PTA ディレクトリーに 存在しない サブツリーです。ユーザーのバインド DN にこのサブツリーが含まれる場合、ユーザーの認証情報が認証ディレクトリーに渡されます。
図20.2 簡易的な PAM パススルー認証プロセス

パススルー認証が機能する仕組みを以下に示します。
- 設定 Directory Server (認証ディレクトリー) がマシン A にインストールされています。設定ディレクトリーには、認証するユーザーエントリーを含む接尾辞 o=RedHat など) が常に含まれます。この例では、サーバー名は authdir.example.com です。
- ユーザー Directory Server (PTA ディレクトリー) がマシン B にインストールされます。ユーザーディレクトリーは、dc=example,dc=com などのルート接尾辞を保存します。この例では、サーバー名は userdir.example.com です。
- 以下のコマンドを使用して userdir.example.com にプラグインを設定します。
# dsconf -D "cn=Directory Manager" ldap://userdir.example.com plugin pass-through-auth enable # dsconf -D "cn=Directory Manager" ldap://userdir.example.com plugin pass-through-auth url add "ldap://authdir.example.com/o=RedHat"
- userdir.example.com で Directory Server を再起動します。
- ユーザーディレクトリーは、o=RedHat が含まれる DN を持つエントリーのすべてのバインド要求を設定ディレクトリー authdir.example.com に送信するように設定されるようになりました。
- ユーザーディレクトリーでは、任意のユーザーが o=RedHat からバインドできるようになります。
20.13.1. PTA プラグインの構文
PTA プラグインの設定情報は、必要な PTA 構文を使用して PTA ディレクトリーの cn=Pass Through Authentication、cn=plugins,cn=config エントリー (認証ディレクトリーへのバインド要求をパススルーするように設定されたユーザーディレクトリー) に指定されます。
以下のコマンドを使用して、パススルー認証 URL を管理します。
- パススルー認証 URL を追加するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth url add URL
- パススルー認証 URL を変更するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth url modify old_URL new_URL
- パススルー認証 URL を削除するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth url delete URL
PTA プラグイン構文の変数コンポーネントは、表20.3「PTA プラグインのパラメーター」 で説明されています。
注記
LDAP URL (ldap|ldaps://authDS/subtree) は、1 つの空白で任意のパラメーター (maxconns、maxops、timeout、ldver、connlifetime、startTLS) から分離する必要があります。任意のパラメーターのいずれかが定義される場合は、デフォルト値のみが使用されている場合でも、それらをすべて定義する必要があります。
「複数の認証用 Directory Server の指定」にあるように、
nsslapd-pluginarg
属性接尾辞を 1 つずつ増やすことで、いくつかの認証ディレクトリーまたはサブツリーを指定できます。以下に例を示します。
nsslapd-pluginarg0: LDAP URL for the first server nsslapd-pluginarg1: LDAP URL for the second server nsslapd-pluginarg2: LDAP URL for the third server ...
任意のパラメーターは、構文で表示される順序で以下の表で説明されています。
変数 | 定義 | ||
---|---|---|---|
state | プラグインを有効または無効にするかどうかを定義します。使用できる値は on または off です。 | ||
ldap|ldaps | 2 つの Directory Server 間の通信に TLS を使用するかどうかを定義します。詳細は、「セキュアな接続を使用するようにサーバーを設定」を参照してください。 | ||
authDS | 認証ディレクトリーのホスト名。Directory Server のポート番号は、コロンとポート番号を追加して指定できます。たとえば、ldap://dirserver.example.com:389/ です。ポート番号が指定されていない場合、PTA サーバーは標準ポートのいずれかを使用して接続を試みます。
| ||
subtree | パススルーサブツリー。PTA Directory Server は、このサブツリーに DN を持つすべてのクライアントから、認証する Directory Server にバインド要求を渡します。詳細は、「パススルーサブツリーの指定」を参照してください。このサブツリーは、このサーバーに存在させることはできません。 | ||
maxconns | 任意。PTA ディレクトリーの最大接続数は、認証ディレクトリーに対して同時に開くことができます。デフォルトは 3 です。詳細は、「オプションパラメーターの設定」を参照してください。 | ||
maxops | 任意。PTA ディレクトリーは単一接続内の認証ディレクトリーに送信できる同時操作の最大数 (通常はバインド要求)。デフォルトは 5 です。詳細は、「オプションパラメーターの設定」を参照してください。 | ||
timeout | 任意。PTA ディレクトリーが、認証用ディレクトリーサーバーからの応答を待つ時間を秒単位で指定します。このタイムアウトを超えると、サーバーはエラーをクライアントに返します。デフォルトは 300 秒 (5 分) です。ゼロ (0) を指定すると、時間制限をかけないことを示します。詳細は、「オプションパラメーターの設定」を参照してください。 | ||
ldver | 任意。認証用ディレクトリーへの接続に使用される LDAP プロトコルのバージョン。Directory Server は LDAP バージョン 2 および 3 をサポートします。デフォルトはバージョン 3 です。Red Hat は、古くなり、非推奨になる LDAPv2 を使用 しない ことを強く推奨します。詳細は、「オプションパラメーターの設定」を参照してください。 | ||
connlifetime | 任意。接続を使用できる制限時間を秒単位で指定します。この時間が経過した後にクライアントからバインド要求が開始すると、サーバーは接続を閉じ、認証するディレクトリーへの新しい接続を開きます。バインド要求が開始し、ディレクトリーが接続寿命を超えたと判断しない限り、サーバーは接続を閉じません。このオプションを指定しない場合、または 1 つのホストのみが記載されている場合は、接続の有効期間は実行されません。2 つ以上のホストがリストされている場合、デフォルトは 300 秒 (5 分) です。詳細は、「オプションパラメーターの設定」を参照してください。 | ||
startTLS |
任意。認証用ディレクトリーへの接続に STARTTLS を使用するかどうかを示すフラグ。STARTTLS は標準ポート上でセキュアな接続を確立するため、LDAPS の代わりに LDAP を使用して接続するのに便利です。TLS サーバーと CA 証明書の両方がサーバーで使用できる必要があります。
デフォルトは 0 (off) です。STARTTLS を有効にするには、1 に設定します。STARTTLS を使用するには、LDAP URL は ldaps: ではなく ldap: を使用する必要があります。
詳細は、「オプションパラメーターの設定」を参照してください。
|
20.13.2. PTA プラグインの設定
PTA 設定を変更するには、以下を実行します。
- dsconf plugin pass-through-auth を使用して、cn=Pass Through Authentication,cn=plugins,cn=config エントリーを変更します。
- Directory Server を再起動します。
PTA プラグインパラメーターを設定する前に、Directory Server に PTA プラグインエントリーが必要です。このエントリーが存在しない場合は、「PTA プラグインの構文」 で説明されているように、適切な構文で作成します。
注記
ユーザーと設定ディレクトリーがそのディレクトリーの別のインスタンスにインストールされている場合は、PTA プラグインエントリーがユーザーディレクトリーの設定に自動的に追加され、有効になります。
本セクションでは、以下のセクションでプラグインを設定する方法を説明します。
20.13.2.1. セキュアな接続を使用するようにサーバーを設定
PTA ディレクトリーは、PTA ディレクトリーの LDAP URL に LDAPS を指定して、TLS 経由で認証ディレクトリーと通信するように設定できます。以下に例を示します。
nsslapd-pluginarg0: ldaps://ldap.example.com:636/o=example
20.13.2.2. 認証する Directory Server の指定
認証用ディレクトリーには、クライアントがバインドしようとしているエントリーのバインド認証情報が含まれます。PTA ディレクトリーは、認証ディレクトリーとして定義されたホストにバインド要求を渡します。認証する Directory Server を指定するには、表20.3「PTA プラグインのパラメーター」 で説明されているように、PTA ディレクトリーの LDAP URL の authDS を、認証するディレクトリーのホスト名に置き換えます。
- dsconf plugin pass-through-auth コマンドを使用して PTA プラグインエントリーを編集します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth add ldap://server.example.com/o=example
必要に応じて、ポート番号を含めます。ポート番号が指定されていない場合、PTA Directory Server は ldap:// の標準ポート (389) または ldaps:// のセキュアなポート (636) を使用して接続を試みます。PTA Directory Server と認証する Directory Server との間の接続が破損するか、接続を開始できない場合は、PTA Directory Server が、指定された次のサーバー (存在する場合) に要求を送信します。最初の Directory Server が利用できない場合にフェイルオーバーを提供するために、必要に応じて認証する複数の Directory Server を指定できます。認証するすべての Directory Server がnsslapd-pluginarg0
属性に設定されます。認証する複数の Directory Server は、以下の形式で、スペース区切りの host:port ペアのリストで記述されます。ldap|ldaps://host1:port1 host2:port2/subtree
- サービスを再起動します。
# dsctl instance_name restart
20.13.2.3. パススルーサブツリーの指定
PTA ディレクトリーは、パススルーサブツリーで定義された DN を持つすべてのクライアントからの認証要求を、バインド要求を渡します。サブツリーを指定するには、PTA ディレクトリーの LDAP URL の subtree パラメーターを置き換えて指定します。
パススルーのサブツリーは PTA ディレクトリーに存在すべきではありません。そうすると、PTA ディレクトリーは自分のディレクトリーの内容を使用してバインド要求を解決しようとするため、バインドが失敗します。
- dsconf plugin pass-through-auth コマンドを使用して、LDIF ファイルをディレクトリーにインポートします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth add ldap://server.example.com/o=example
この構文の変数コンポーネントの詳細は、表20.3「PTA プラグインのパラメーター」 を参照してください。 - サービスを再起動します。
# dsctl instance_name restart
20.13.2.4. オプションパラメーターの設定
PTA 接続の制御に使用する追加のパラメーターは LDAP URL で設定できます。
ldap|ldaps://authDS/subtree maxconns, maxops, timeout, ldver, connlifetime, startTLS
- PTA Directory Server が認証ディレクトリーに対して同時に開くことができる最大の接続数で、PTA の構文では maxconns で表されます。デフォルト値は 3 です。
- PTA Directory Server が単一の接続内の認証する Directory Server に同時に送信できるバインド要求の最大数。PTA 構文では、このパラメーターは maxops です。デフォルト値は 5 です。
- PTA Directory Server が認証する Directory Server からの応答を待つ時間制限。PTA 構文では、このパラメーターは timeout です。デフォルト値は 300 秒 (5 分) です。
- 認証する Directory Server への接続に使用する PTA Directory Server の LDAP プロトコルのバージョン。PTA 構文では、このパラメーターは ldver です。デフォルトは LDAPv3 です。
- 接続を使用できる制限時間を秒単位で指定します。この時間を過ぎてからクライアントがバインドリクエストを開始すると、そのサーバーは接続を閉じ、認証する Directory Server への新しい接続を開きます。バインド要求が開始し、サーバーがタイムアウトを超えたかどうかを判別しない限り、サーバーは接続を閉じません。このオプションが指定されていない場合や、認証する Directory Server が authDS パラメーターに記載されている場合に限り、時間制限が適用されません。2 つ以上のホストがリストされている場合、デフォルトは 300 秒 (5 分) です。PTA 構文では、このパラメーターは connlifetime になります。
- 接続に STARTTLS を使用するかどうか。STARTTLS は標準の LDAP ポートでセキュアな接続を作成します。STARTTLS については、サーバーおよび CA 証明書がインストールされている必要がありますが、TLS で実行する必要はありません。デフォルトは 0 で、STARTTLS がオフになっていることを意味します。STARTTLS を有効にするには、1 に設定します。STARTTLS を使用するには、LDAP URL は ldaps: ではなく ldap: を使用する必要があります。
- dsconf plugin pass-through-auth コマンドを使用して、プラグインエントリーを編集します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth add ldap://server.example.com/o=example 3,5,300,3,300,0
(この例では、各オプションのパラメーターはデフォルト値に設定されます。)subtree パラメーターと任意のパラメーターの間にスペースがあることを確認してください。注記これらのパラメーターは任意ですが、いずれかのパラメーターが定義されている場合は、デフォルト値を使用していてもすべてのパラメーターを定義する必要があります。 - サービスを再起動します。
# dsctl instance_name restart
20.13.3. PTA プラグイン構文の例
本セクションでは、
dse.ldif
ファイルの PTA プラグイン構文の以下の例を説明します。
20.13.3.1. Directory Server と 1 つのサブツリーの指定
この例では、PTA プラグインを設定して、オプションの変数の全デフォルトを受け入れるように設定します。この設定により、PTA Directory Server は o=example サブツリーへのすべてのバインド要求に対して、認証する Directory Server に接続します。認証する Directory Server のホスト名は configdir.example.com です。
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com/o=example ...
20.13.3.2. 複数の認証用 Directory Server の指定
PTA Directory Server と認証する Directory Server との間の接続が破損するか、接続を開始できない場合は、PTA Directory Server が、指定された次のサーバー (存在する場合) に要求を送信します。最初の Directory Server が利用できない場合にフェイルオーバーを提供するために、必要に応じて認証する複数の Directory Server を指定できます。認証するすべての Directory Server が
nsslapd-pluginarg0
属性に設定されます。認証する複数の Directory Server は、host:port ペアの空白区切りリストにリスト表示されます。以下に例を示します。
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com:389 config2dir.example.com:1389/o=example ...
注記
nsslapd-pluginarg0
属性は、認証する Directory Server を設定します。追加の nsslapd-pluginargN
属性は、使用する PTA プラグインの追加 接尾辞 を設定できますが、追加の ホスト ではありません。
20.13.3.3. 1 つの Directory Server と複数のサブツリーを指定
以下の例では、PTA Directory Server が複数のサブツリーのバインド要求をパススルーするように設定します (パラメーターのデフォルトを使用)。
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com/o=example nsslapd-pluginarg1: ldap://configdir.example.com/dc=example,dc=com ...
20.13.3.4. デフォルト以外のパラメーター値の使用
この例では、最大接続数パラメーター maxconns のみに、デフォルト以外の値 (10) を使用しています。その他のパラメーターはデフォルト値に設定されます。ただし、1 つのパラメーターが指定されているため、構文ですべてのパラメーターを明示的に定義する必要があります。
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com/o=example 10,5,300,3,300,1 ...
20.13.3.5. 認証する異なる Directory Server の異なる任意のパラメーターおよびサブツリーの指定
認証する Directory Server ごとに異なるパススルーサブツリーと任意のパラメーター値を指定するには、複数の LDAP URL/任意のパラメーターペアを設定します。LDAP URL/任意のパラメーターペアは、以下のように単一スペースで区切ります。
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0:ldap://configdir.example.com/o=example 10,15,30,3,600,0 nsslapd-pluginarg1:ldap://config2dir.example.com/dc=example,dc=com 7,7,300,3,300,1 ...