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>

 DVLdapExtContextDVLdapContext がサポートするその他のプロパティは、このセクションで追加できます。

例えば、システムでユーザー名を表示するための条件付きルールを設定するには、以下のプロパティを設定します:

<property name="displayUserName" value="has('userPrincipalName') ? stripDomain(userPrincipalName) : distinguishedName"/>

Version 4.11 and Above: Authorization and Authentication Realms Stacking

認証レルムと認可レルムを組み合わせることで、ユーザーを認証・認可したり、ユーザーやロールをロードしたりすることができます。例えば、内部でロールと権限を管理しながら、LDAP 認証を使用することができます。以下の手順に従ってください:

  1. 通常どおりサーバーを起動し、admin / admin でログインします。

  2. LDAP ユーザーのユーザー名と一致する内部ユーザーアカウントを作成します。ロールと権限を割り当てますが、プレースホルダーパスワードを使用します。 

    -- Create a user with admin role
    call SYSADMIN.addUser("name" => 'ad_user1', "pwd" => '123', "role_name" => 'admin-role') ;;
    -- Create a user wiht connect role
    call SYSADMIN.addUser("name" => 'ad_user2', "pwd" => '123', "role_name" => 'connect-dv-role') ;;

  3. サーバーを停止し、認証レルムを除いて上記のとおり設定を更新します。認証レルムについては、以下のように設定します。以下の例では、認証はDataVirtualityRealmLDAP 経由で実行され、認可にはDataVirtualityRealmCustom が使用されます:

    <aggregate-realm name="DataVirtualityRealm" authentication-realm="DataVirtualityRealmLDAP" authorization-realm="DataVirtualityRealmCustom"/>
    <custom-realm class-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>

  4. サーバーを再起動します。

  5. 手順2で作成したユーザー名でログインし、システムにアクセスします。

Authorization and authentication realms stacking available since v4.11