この付録では、プロビジョニングシステムに認証方式を追加するための要件、認証方式の変更方法、および認証方式の構成時に変更する必要のある構成ファイルの例について解説します。
プロビジョニングシステムに認証方式を追加するには、3 つの要件を満たす必要があります。
プロビジョニングシステムでは、1 組のユーザー名とパスワードで認証する方式のみを使用します。
複数回数の試行を許可する認証方式を追加すると、ユーザーがログインできなくなります。
ユーザーは、「internal」という名前が付く認証方式を、jaas.config ファイルに追加することはできません。
internal 認証方式は、非表示の認証方式として、自動的に jaas.config ファイルで使用可能になります。
認証方式を変更するには、Master Server を再起動する必要があります。
この手順では、プロビジョニングシステムで使用される認証方式を変更する方法について説明します。新しい認証方式を追加したあとに、「ユーザーの認証方式を変更する」を参照してください。
プロビジョニングシステムに認証方式を追加する方法については、以下のマニュアルを参照してください。
Java Authentication and Authorization Service (JAAS) 構成ファイルの編集については、 Java 2 Platform javax.security.auth.loginを参照してください。Configuration class documentationを参照してください。
JAAS とバンドルされている LoginModule については、 com.sun.security.auth.module Java package documentationを参照してください。
プロビジョニングシステムをインストールしたユーザーで、マシンにログインします。
Master Server を停止します。
%N1SPS-MasterServer-home/server/bin/cr_server stop |
jaas.config ファイルを編集します。
このファイルは N1SPS-MasterServer-home/server/lib/security/jaas.config にあります。このファイルには、LDAP、Sun Directory Server、および Microsoft Windows 2000 Active Directory Server を使用して認証を設定する方法を記載したマニュアルが格納されています。
config.properties ファイルを編集します。
このファイルは N1SPS-MasterServer-home/server/config/config.properties にあります。
userdb.authModules プロパティを設定します。このプロパティの値は、jaas.config ファイルで指定されたログイン構成のコンマ区切りリストでなければなりません。ログイン構成のリスト順は、「Authentication Method」メニューの表示順に対応しています。
internal は jaas.config ファイルに指定できませんが、デフォルトの内部認証方式を userdb.authModules プロパティのコンマ区切りリストに入れることはできます。
Master Server を再起動します。
再起動後、プロビジョニングシステムは、新規ログイン構成または変更されたログイン構成を使用します。
ログイン構成を変更した結果、ユーザーのパスワードも変更された場合は、セッション変数を再暗号化するか、フラッシュする必要があります。
// このファイルには、システムのログイン構成の定義が含まれます。 // 認証用に有効化されたログイン構成は、config プロパティファイルの // userdb.authModules プロパティのコンマ区切り値リストに // 記されます。 // // ログイン構成名「internal」は予約されており // このファイルでは指定できないので注意してください。 // 「internal」ログイン構成は、デフォルトで常に使用可能で // 認証用の内部ログインモジュールのみを含みます。 // // 例 // // 内部ログイン構成のみを使用する // // internal-auth { // com.sun.n1.sps.userdb.UserDBLoginModule Required; // }; // // // // LDAP 認証を使用 // // ldap-auth { // com.sun.n1.sps.userdb.LdapLoginModule Required // userProvider="ldap://LDAPServerHostName/userDN" // userFilter="ldapFilter" // authIdentity="userDN" // useSSL="sslFlag" // debug="debugFlag"; // } corporate-ds { com.sun.n1.sps.userdb.LdapLoginModule Required userProvider="ldap://sol01.cr.n1lab.sfbay.sun.com" authIdentity="uid={USERNAME},ou=People,dc=cr,dc=n1lab,dc=sfbay,dc=sun,dc=com" }; // // ここで: // userProvider は LDAPServerHostName 部分で構成されています。 // ここでは LDAP サーバーのサーバーホスト名を指定します。 // サーバーホスト名には、ポート番号 (詳細については // (http://www.ietf.org/rfc/rfc2255.txt) を確認してください) // (たとえば ldap.sun.com:389) や、ユーザーエントリ (userDN) が // 保存されているディレクトリツリー内の場所などが // 含まれます。この userDN は省略可能ですが、指定した場合は // userFilter によって使用されます。 // userFilter は、LDAP ディレクトリのユーザーのエントリを // 特定するために使われる検索フィルタです。ldapFilter は // LDAP フィルタ文字列です (詳細については // (http://www.ietf.org/rfc/rfc2254.txt を確認してください)。ここに // 特殊トークン {USERNAME} が含まれる場合は、フィルタを // 使用してディレクトリを検索する前に、指定の username 値に // 置換されます。userFilter 検索は、userProvider に指定された // userDN に基づいて行なわれます。 // // authIdentity は、ユーザーの認証に使用する、識別名を指定します。 // authIdentity は、LDAP の識別名文字列です。 // (詳細については、 // http://www.ietf.org/rfc/rfc2253.txt を確認してください) // ここには、特殊トークン "{USERNAME}" が含まれていなければ // なりません。このトークンは、識別名を使用して認証を行なう前に // 指定の username 値に置換する必要があります。 // このオプションに識別名が含まれていない場合は、 // userFilter オプションも指定しなければならないことに // 注意してください。 // sslFlag は、ldap サーバーとの接続に ssl 通信を使用するか // どうかを指定します。有効な値は true または false です。 // デフォルト値は true です。 // debugFlag は、LDAP の認証試行時に、デバッグ情報を // 生成するかどうかを指定します。 // 有効な値は true または false です。デフォルト値は // false です。 // // // Sun Directory Server への認証に使用するエントリの例を // 以下に示します。 // // // sun-ldap1 { // com.sun.n1.sps.userdb.LdapLoginModule Required // userProvider="ldap://ldaphost.example.com/ou=People,dc=example,dc=com" // userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))" // }; // // sun-ldap2 { // com.sun.n1.sps.userdb.LdapLoginModule Required // userProvider="ldap://ldaphost.example.com" // authIdentity="uid={USERNAME},ou=People,dc=example,dc=com" // }; // sun-ldap2 { com.sun.n1.sps.userdb.LdapLoginModule Required userProvider="ldap://falkland.cr.n1lab.sfbay.sun.com:389" authIdentity="uid={USERNAME},ou=People,dc=example,dc=com"; }; // // sun-ldap3 { // com.sun.n1.sps.userdb.LdapLoginModule Required // userProvider="ldap://ldaphost.example.com/ou=People,dc=example,dc=com" // userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))" // authIdentity="uid={USERNAME},ou=People,dc=example,dc=com"; // }; // // // // Microsoft Windows 2000 Active Directory Server を使用した // エントリの一部を以下に示します。 // ads-ldap1 { // com.sun.n1.sps.userdb.LdapLoginModule Required // userProvider="ldap://ldaphost.example.com/CN=user,DC=example,DC=com" // userFilter="(&(userPrincipalName={USERNAME}@example.com)(objectClass=user))" // authIdentity="{USERNAME}@example.com" // useSSL=false // debug=true; // }; // // ads-ldap2 { // com.sun.n1.sps.userdb.LdapLoginModule Required // userProvider="ldap://ldaphost.example.com/CN=user,DC=example,DC=com" // userFilter="(&(samAccountName={USERNAME})(objectClass=user))" // authIdentity="{USERNAME}@example.com" // useSSL=false // debug=true; // }; |
... # ユーザーの認証に使用するログイン構成のコンマ区切りリスト userdb.authModules=internal,corporate-ds,sun-ldap2 ... |