LDAP 認証メカニズムでは、ユーザー(およびパスワード)とロール(またはグループ)は、Active Directory またはLDAP ドメインからロードされます。
Encrypting Credentials in the Configuration
dvserver-standalone.xml で定義された資格情報をエンコードするには、次のようにします:
1. CLI コマンドでパスワードを暗号化します:
CALL SYSADMIN.executeCli(script => '/subsystem=elytron/expression=encryption:create-expression(resolver=dv-encryption-resolver, clear-text=Password123)', "maskInLogs" => true) ;;出力は以下のようになります:
{ "outcome" => "success", "result" => {"expression" => "${ENC::dv-encryption-resolver:RUxZAUMQ42XclErCI4BDa6nzzp/r/aqx31Cu/aNwUjvCgr5Tofw=}"}}2. 以下のように、設定ファイルで使用する式の値をコピーします:
<dir-contexts> <dir-context name="ldap-connection" principal="CN=Administrator,CN=Users,DC=mydomain,DC=local" url="ldap://192.168.222.102/"> <credential-reference clear-text="${ENC::dv-encryption-resolver:RUxZAUMQ42XclErCI4BDa6nzzp/r/aqx31Cu/aNwUjvCgr5Tofw=}"/> </dir-context></dir-contexts>Configuration
LDAP 認証を構成するには、dvserver-standalone.xml を以下のように変更してください:
1. 認証レルムを設定します。以下のコードを:
<custom-realm class-name="com.datavirtuality.dv.core.teiid.users.DVLoginModule" module="com.datavirtuality.dv" name="DataVirtualityRealm"/>To search for this line, use "custom-realm" as your search term as the actual order of elements may differ.
このようなスニペットで置き換えます:
<ldap-realm dir-context="ldap-connection" direct-verification="true" name="DataVirtualityRealm"> <identity-mapping rdn-identifier="cn" search-base-dn="DC=mydomain,DC=local" use-recursive-search="true"> <attribute-mapping> <attribute filter="(member={1})" filter-base-dn="OU=Users,DC=mydomain,DC=local" from="cn" to="Roles"/> </attribute-mapping> </identity-mapping></ldap-realm>フィルタベースの認証は、次のように設定できます。
<ldap-realm dir-context="ldap-connection" direct-verification="true" name="DataVirtualityRealm"> <identity-mapping filter-name="(userPrincipalName={0}@mydomain.local)" rdn-identifier="userPrincipalName" use-recursive-search="true" search-base-dn="DC=mydomain,DC=local"> <attribute-mapping> <attribute filter="(member={1})" filter-base-dn="OU=Users,DC=mydomain,DC=local" from="cn" to="Roles"/> </attribute-mapping> </identity-mapping></ldap-realm>上記のフラグメントの値は、環境の設定に合わせて調整してください。
2. </expression-resolver> 閉じタグを見つけ、その後ろに以下のコードを貼り付けます。あらかじめ必要な部分を自分の値に置き換えてください:
<dir-contexts> <dir-context name="ldap-connection" principal="CN=Administrator,CN=Users,DC=mydomain,DC=local" url="ldap://192.168.0.68/"> <credential-reference clear-text="Password123"/> </dir-context></dir-contexts>3. </policy-decider-module> 閉じタグを見つけ、その後ろに以下のコードを挿入します:
<ldap> <property name="defaultAdminGroup" value="super-group"/> <property name="displayUserName" value="cn"/> <property name="roleRecursion" value="5"/> </ldap> DVLdapExtContext とDVLdapContext がサポートするその他のプロパティは、このセクションで追加できます。
例えば、システムでユーザー名を表示するための条件付きルールを設定するには、以下のプロパティを設定します:
<property name="displayUserName" value="has('userPrincipalName') ? stripDomain(userPrincipalName) : distinguishedName"/>Version 4.11 and Above: Authorization and Authentication Realms Stacking
認証レルムと認可レルムを組み合わせることで、ユーザーを認証・認可したり、ユーザーやロールをロードしたりすることができます。例えば、内部でロールと権限を管理しながら、LDAP 認証を使用することができます。以下の手順に従ってください:
通常どおりサーバーを起動し、admin / admin でログインします。
LDAP ユーザーのユーザー名と一致する内部ユーザーアカウントを作成します。ロールと権限を割り当てますが、プレースホルダーパスワードを使用します。
-- Create a user with admin rolecall SYSADMIN.addUser("name"=>'ad_user1',"pwd"=>'123',"role_name"=>'admin-role') ;;-- Create a user wiht connect rolecall SYSADMIN.addUser("name"=>'ad_user2',"pwd"=>'123',"role_name"=>'connect-dv-role') ;;サーバーを停止し、認証レルムを除いて上記のとおり設定を更新します。認証レルムについては、以下のように設定します。以下の例では、認証はDataVirtualityRealmLDAP 経由で実行され、認可にはDataVirtualityRealmCustom が使用されます:
<aggregate-realm name="DataVirtualityRealm"authentication-realm="DataVirtualityRealmLDAP"authorization-realm="DataVirtualityRealmCustom"/><custom-realmclass-name="com.datavirtuality.dv.core.teiid.users.DVLoginModule"module="com.datavirtuality.dv"name="DataVirtualityRealmCustom"/><ldap-realm dir-context="ldap-connection"direct-verification="true"name="DataVirtualityRealmLDAP"><identity-mapping rdn-identifier="cn"search-base-dn="DC=mydomain,DC=local"use-recursive-search="true"/></ldap-realm>サーバーを再起動します。
手順2で作成したユーザー名でログインし、システムにアクセスします。
Authorization and authentication realms stacking available since v4.11