本記事では、Liferayプラットフォームのメールアドレス検証機能により、特定のドメインのユーザーがLDAP経由でインポートされない理由を説明し、ビジネスニーズに応じて特定のドメインが必要な場合に解決する方法を紹介します。
または例として、2つのハイフンを使用するドメイン(例: a-b-test.com)は、Liferay Digital Enterprise 7.0 で使用されている defaultemailaddressvalidator を通過せず、結果としてコンソールに以下のエラーメッセージが表示されます:
17:08:48,279 ERROR [liferay/scheduled_user_ldap_import-1][LDAPUserImporterImpl:801] Unable to import user CN=sallyb@l-e-mplastics.com,CN=Users: null:null:{samaccountname=sAMAccountName: 0001107625}
com.liferay.portal.kernel.exception.UserEmailAddressException$MustValidate: Email name address testuser@a-b-test.com must validate with com.liferay.portal.kernel.security.auth.DefaultEmailAddressValidator
解決策
この問題は、 a-b-test.com ドメインで再現可能です。
Liferayプラットフォームがデフォルトで使用するメールアドレス検証ツールは、上記の例のようにハイフンが2つあるドメインを無効なものとして扱うため、このような挙動が観察されますが、これは意図したものです。
これを解決するためには、ドメインを変更するか(これは理想的ではありません)、新しいメールアドレスのバリデーターを実装する必要があります。 これは、ドメインに対応するフックを作成し、 portal-ext.propertiesにある正しいバリデータークラスを指す以下のポータルプロパティを調整することで実現します:
# Input a class name that implements
# com.liferay.portal.security.auth.EmailAddressValidator. This class will be
# called to validate user email addresses.
#
# This property is not read by the portal except for portal properties
# overridden by liferay-hook.xml. It remains here only as a reference.
#
#users.email.address.validator=com.liferay.portal.security.auth.DefaultEmailAddressValidator
#users.email.address.validator=com.liferay.portal.security.auth.LiberalEmailAddressValidator