問題
LDAPサーバーにユーザーが登録されなくなると、認証に失敗してログインできなくなりますが、「コントロールパネル」-「> ユーザー」にデッドユーザーエントリーが残ります。
Environment
- Liferay DXP 7.0+
解決策
ユーザーの無効化をポータル/データベースと同期させる方法があります。
ステータス
がLDAPユーザー属性に正しくマッピングされている場合、次回インポート/ログイン時にポータルはそのユーザーを非アクティブにし、コントロールパネル -> ユーザーセクションにそのアカウントが表示されないようにします。以下の手順をご覧ください:
- ユーザーをインポートし、そのユーザーが正常にサインインできることを確認し、「コントロールパネル」-「> ユーザー」セクションに表示される。
-
データベースの
user_
テーブルをチェックし、カラムStatus
の値が '0' であることを確認します。これは 'Active' を意味します。 - LDAPサーバー(Apache Directoryなど)に Status の標準属性がない場合、ランダムな属性(例: employeeNumber)を選択し、その値を「Inactive」を意味する「5」に設定します。
- Instance Settings -> Edit LDAP Server で、この employeeNumber 属性を Status にマッピングします(User のマッピング可能フィールドの中で、「Job Title」のすぐ後にリストされています)。
- LDAPインポートをきっかけに、LDAPユーザーでログインしてみて、そのユーザーがログインできないことを確認してください。
-
データベースの
user_
テーブルを再度確認し、ユーザーステータスが「5」であることを保証します。 - コントロールパネル」-「> ユーザー」で、そのユーザーが表示されなくなったことを確認します。
残念ながら、Liferay API(groovyスクリプト)を使う以外、データベースからユーザーを完全に削除するアウトオブボックスな方法はありません:
https://help.liferay.com/hc/en-us/articles/360017895672-Using-Liferay-s-Script-Engine