6 EDQでの外部ユーザー管理(LDAP)の直接構成
EDQとLDAPとの統合
この項には、前提条件およびEDQとLDAPとの統合手順が含まれます。
WebLogicを使用していない場合、または複数のLDAPストアを使用する場合、login.propertiesの設定を使用してEDQとLDAPを直接統合できます。これは、使用しているタイプのLDAPサーバーに対応する事前定義されたオーセンティケータがWebLogicで提供されていない場合にも便利です。たとえば、AD-LDS (Windowsで提供されている軽量LDAPサーバー)は、Active Directoryと互換性がなく、WebLogicのActiveDirectoryAuthenticatorを使用できません。
この項では、単純なLDAP統合のためにlogin.propertiesで必要な設定について説明します。Windows統合認証で使用されるKerberosサポートは、「Windows統合認証(Kerberos)をサポートするためのEDQの構成」で説明します。
前提条件
構成プロセスを開始する前に、次の情報を収集する必要があります。
-
使用しているLDAPサーバーのタイプ。EDQには、Active Directory、Oracle Internet Directory、OpenLDAP (inetOrgPersonユーザー・スキーマを使用)、およびRFC 2307 (Posix)スタイルのユーザー・スキーマを使用するサーバーのための組込みプロファイルがあります。
-
LDAPサーバーのホスト名およびポート。現在の環境に高可用性対応のサーバーが複数含まれる場合、構成内で複数のホストを使用できます。デフォルトのLDAPポートは389です。
-
接続して検索を実行できるLDAPユーザーのアイデンティティおよびパスワード。ユーザー・アイデンティティは、通常、完全な識別名(DN)ですが、Active Directoryでは短縮形式も使用できます。
-
LDAPツリーのベースDN。可能な場合、これはLDAP RootDSEのdefaultNamingContext属性から自動的に決定されますが、利用できない場合はlogin.propertiesで指定する必要があります。
-
EDQを操作するすべてのユーザーが含まれるLDAPグループの名前。グループは、EDQの問題の割当てなどに表示されるユーザーのリストをフィルタするために使用されます。このフィルタがないと、LDAPサーバーのすべてのユーザーが表示されるため、一般的には推奨されません。
親トピック: EDQとLDAPの統合
Active Directoryとの統合
この項の残りでは、Active Directoryとの統合に関する詳細なステップについて説明します。このステップは、他のタイプのLDAPサーバーとほぼ同じです。初期構成ではSSLを使用しません。
手順の説明では、次の設定を使用します。
-
Active Directoryドメイン: EXAMPLE.COM
-
ドメイン・コントローラ(LDAPサーバー): dc1.example.com。デフォルトの非SSLのポート389が使用されます。
-
LDAPユーザー: cn=netuser,cn=users,dc=example,dc=com。このユーザーのADユーザー名が'netuser'であるとすると、netuser@example.comまたはexample\netuserも使用できます。
-
ベースDN: dc=example,dc=com。Active Directoryを使用する場合、これはRootDSEから自動的に決定されます。
-
すべてのEDQユーザー・グループ: edqusers
ノート:
login.propertiesがEDQのローカル構成領域のsecurityディレクトリに存在することを確認してください。Tomcatインストールには、デフォルトのlogin.propertiesがないため、新しい空のファイルを作成します。
-
グローバル設定:
この例では、Active Directoryレルムの名前は'ad'です。
realms = internal, ad gss = false ldap.prof.useprimarygroup = false
レルム・リストを定義します。EDQ内部レルムは、EDQ Webコンソールで組込みの管理者ユーザー'dnadmin'を使用して外部グループ・マッピングを設定するために使用します。最終設定は、ユーザーのプライマリ・グループがグループ・メンバーシップの決定で考慮されないことを示します。Active Directoryでは、これは常にすべてのユーザーを含むドメイン・ユーザー・グループで、EDQでは使用されません。
-
レルム名:
ad.realm = EXAMPLE.COM
Active Directoryドメインの名前を設定します。login.propertiesで複数のレルムを定義すると、EDQのログイン画面にそのレルムのドロップダウン・セレクタが表示されます。これに説明的なテキストを含めるには、次のように'label'プロパティを追加します。
ad.label = Example, Inc. Active directory
-
LDAPサーバー設定:
ad.ldap.server = dc1.example.com ad.ldap.auth = simple ad.ldap.user = cn=netuser,cn=users,dc=example,dc=com ad.ldap.pw = <password for the user>
サーバー名とユーザー情報を設定します。サーバーを省略すると、EDQは、LDAPサービス・レコードのDNSルックアップによってそれを自動的に決定しようとします。EDQが実行されているサーバーが、DNSについてActive Directoryドメイン・コントローラを使用するように構成されている場合、これらのレコードは自動的に設定されます。それ以外の場合、login.propertiesにサーバーを指定します。カンマまたは空白区切りのリストを使用して、複数のサーバーを指定できます。
ad.ldap.server = dc1.example.com, dc2.example.com:2342
EDQとLDAP間の接続に対して暗号化を構成するには、次の行を追加します。
ad.ldap.security = ssl or tls
値としてsslを指定すると、LDAPサーバーのSSLポート(通常は636)に対して接続が行われます。この場合、LDAPサーバーによって使用される証明書は、EDQを実行しているJREによって信頼される必要があります。信頼できるプロバイダによって証明書が作成されていない場合、keytoolコマンドを使用して、JREのcacertsトラスト・ストアにサーバーまたはルートCA証明書を追加します。https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.htmlを参照してください
プロパティ値としてtlsを指定すると、通常の非SSL LDAPポートに対して接続が行われ、接続を切り替えてTLS暗号化を使用するようにStartTLSコマンドが発行されます。パスワードなどのすべての機密情報は、TLSへの切替え後に送信されます。この場合、EDQは、サーバー証明書に簡易チェックを適用します(これはJREに信頼される必要はありません)。内部ネットワークのスプーフィングが懸念される場合は、追加チェックにSSLを使用してください。それ以外の場合、TLSの使用によって構成が簡略化されます。
-
ユーザー認証の構成:
このプロパティ・セットにより、EDQに提供されるユーザー名とパスワードのLDAPでの検証方法が定義されます。これは、2段階のプロセスです。最初に、ユーザー名によって識別されるユーザー・レコードを特定するために検索が行われます。Active Directoryでは、これを行うため、ユーザー名に一致するsAMAccountNameを持つユーザーまたはusername@DOMAINに一致するuserPrincipalNameを持つユーザーを検索します。これらのActive Directory属性は、Windowsの短いログイン名と長いログイン名を表します。
ユーザー・レコードが見つからない場合、認証は失敗します。パスワードを検証するには、次の3つの異なるメソッドがあります。
-
bind: 検出されたユーザー・アイデンティティおよびパスワードを使用してLDAPへの接続を試みます。これが成功しない場合、認証は失敗します。
-
password: ユーザー・レコードからハッシュ化されたパスワードを読み取り、それを指定されたパスワードと比較します。ほとんどのLDAPサーバーでは、ユーザー・パスワード値を読み取ることができないため、このメソッドはめったに適用されません。これは、Posixスタイルのユーザー・スキーマで使用されることがあります。
-
compare: LDAPの比較操作を使用してパスワードを確認します。このメソッドは、Oracle Internet Directoryで使用可能で、LDAPサーバーで新しいセッションを作成することがないため、状況によっては'bind'より適切です。
デフォルト・メソッドは'bind'で、これは常にActive Directoryで使用されます。
ad.auth = ldap ad.auth.bindmethod = simple ad.auth.binddn = search: dn
'auth'プロパティでLDAPベースの認証を設定しますが、Kerberosなどの拡張メソッドを使用する場合、他の設定も可能です。'bindmethod'プロパティでは、接続メソッドを設定します('simple'は、ユーザー名とパスワードをクリア・テキストで送信します)。'binddn'プロパティでは、接続の試行で使用されるアイデンティティを設定します。ここでは、初期ユーザー検索で検出されたDN (識別名)が使用されます。
かわりのバインド・メソッドは、クリア・テキストではなくハッシュ化形式でパスワードを送信するdigest-md5です。このメソッドを使用するには、バインド・プロパティを次のように置き換えます。
ad.auth.bindmethod = digest-md5 ad.auth.binddn = search: sAMAccountName
Windowsユーザー名は、識別名(これはdigest-md5接続では必須)のかわりに接続で使用されます。
パスワード検証にLDAP比較を使用するには、Oracle Internet Directoryで次の設定を使用します。
oid.auth = ldap oid.auth.method = compare
-
-
LDAPプロファイル:
これらの設定で、使用するLDAPスキーマを定義し、ユーザー・ルックアップをカスタマイズします。
ad.ldap.profile = adsldap ad.ldap.prof.defaultusergroup = edqusers
'adsldap'プロファイルは、Active Directoryで使用されます。事前定義された他のプロファイルは次のとおりです。
-
inetorgoidldap: Oracle Internet DirectoryとinetOrgPersonユーザー
-
inetorgopenldap: OpenLDAPとinetOrgPersonユーザー
-
rfc2307ldap: RFC 2307 (Posix)スタイルのユーザー・レコード
'defaultusergroup'プロパティで、すべてのEDQユーザーを含むグループを定義します。
大規模な組織のLDAPストアには、数千に及ぶ別個のグループが含まれることがあり、追加フィルタがなければ、EDQ Webコンソールの外部グループのマッピング・リストにすべて表示されます。グループ・リストを管理可能なサイズにフィルタするには、次のようにLDAPグループ・フィルタを追加します。
ad.ldap.prof.groupsearchfilter = LDAPGROUPFILTER
ここで、LDAPGROUPFILTERは、グループを選択するためのLDAPスタイルのフィルタです。フィルタでは、事前定義されたマッピングで使用されるすべてのグループを戻す必要があります。
EXAMPLE.COM設定では、EDQで使用されるすべてのグループが接頭辞'edq'で始まるため、フィルタは次のようになります。
ad.ldap.prof.groupsearchfilter = (cn=edq*)
-
-
まとめ:
これが、Active Directory統合の例で使用される完全なlogin.propertiesです。
# EXAMPLE.COM LDAP integration # ---------------------------- realms = internal, ad gss = false ldap.prof.useprimarygroup = false ad.realm = EXAMPLE.COM ad.ldap.server = dc1.example.com ad.ldap.auth = simple ad.ldap.user = cn=netuser,cn=users,dc=example,dc=com ad.ldap.pw = <password for the user> ad.auth = ldap ad.auth.bindmethod = simple ad.auth.binddn = search: dn ad.ldap.profile = adsldap ad.ldap.prof.defaultusergroup = edqusers
-
複数のLDAPストアとの統合:
複数のLDAPストアと統合するには、複数のレルムを定義してそれぞれの設定のブロックを含めます。
realms = internal, ad1, ad2, oid ad1.realm = … … ad2.realm = … … oid.realm = … …
複数のドメインを持つActive Directoryフォレストを使用する場合、login.propertiesに各ドメインを個別のレルムとして定義する必要があります(EDQでは、クロスドメイン参照を作成できません)。次に例を示します。
realms = internal, aduk, asus aduk.realm = UK.EXAMPLE.COM aduk.ldap.server = DC1.UK.EXAMPLE.COM … adus.realm = US.EXAMPLE.COM asus.ldap.server = DC1.US.EXAMPLE.COM …
親トピック: EDQとLDAPの統合