この記事では、Active DirectoryユーザーがLiferayプラットフォームにログインしようとする際の1つの問題を解決します。
- LiferayがLDAPサーバーで使用できるように設定されている(Userセクションの "Group "属性をマッピングしない)。
- LDAPエクスポートが有効になっている
- LDAPユーザー「user1」がLiferayにログインできる。
- user1がユーザーグループ "Group1 "に参加する。
- user1が同じLDAP認証情報を使ってLiferayにログインしようとする。
結果:
残念ながら、ユーザは拒否され、以下のスタックトレースが発生します:
com.liferay.portal.ModelListenerException: javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 21 - invalid type '']; remaining name 'cn=john.johnson,ou=Users,ou=test,dc=test-dev,dc=com'
at com.liferay.portal.model.UserListener.onAfterUpdate(UserListener.java:75)
at com.liferay.portal.model.UserListener.onAfterUpdate(UserListener.java:1)
at com.liferay.portal.model.BaseModelListener.onAfterUpdate(BaseModelListener.java:1)
at com.liferay.portal.service.persistence.impl.BasePersistenceImpl.update(BasePersistenceImpl.java:264)
at com.liferay.portal.service.impl.UserLocalServiceImpl.authenticate(UserLocalServiceImpl.java:5012)
at com.liferay.portal.service.impl.UserLocalServiceImpl.authenticateByEmailAddress(UserLocalServiceImpl.java:855)
解決策
LDAPエクスポートを有効にすると、通常、ログイン時にLiferayユーザーの情報がLDAPサーバーにエクスポートされます。 この場合、そのユーザーはLiferayのユーザーグループに属していたため、そのユーザーがログインしようとすると、Liferayはそのユーザーが属していたグループをエクスポートしようとしました。 残念ながら、グループ設定がLiferayでマッピングされていなかったため、ログインと一緒にエクスポートも失敗してしまいました。
解決策は、「設定」-「> 認証」-「> LDAP」-「> (LDAPサーバーの選択)」でユーザーのグループに対するマッピングを設定するだけです。 ユーザー」の項目で、「グループ」フィールドの適切なマッピングを選択します(例:「memberOf」)。