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 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'
) ;;
サーバーを停止し、認証レルムを除いて上記のとおり設定を更新します。認証レルムについては、以下のように設定します。以下の例では、認証は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>
サーバーを再起動します。
手順2で作成したユーザー名でログインし、システムにアクセスします。
Authorization and authentication realms stacking available since v4.11