В Liferay уже реализована возможность прикинуться пользователем (impersonate) через интерфейс админки в разделе Users and Organizations.
При штатном impersonate Liferay добавляет в запрос гет-параметр doAsUserId. Этот параметр представляет собой заэнкоженый user id пользователя, за которого будет производиться логин.
Но бывают случаи, когда необходимо добавить кастомную возможность impersonate в портлете. Для этого тоже просто достаточно самостоятельно передать нужный doAsUserId в параметр урла.
Как сгенерировать doAsUserId:
1. При версии Liferay 7.4.3.23-ga23 и выше
Нужно заэнкодить userId пользователя, используя метод encode класса EncryptorUtil
import com.liferay.portal.kernel.encryptor.EncryptorUtil;
Метод encrypt, который принимает company key и userId:
Company company = LiferayPortletHelperUtil.getThemeDisplay().getCompany(); // получить дефолтную company.
EncryptorUtil.encrypt(company.getKeyObj(), String.valueOf(user.getUserId()));
Зависимость мавена для пакета com.liferay.portal.kernel.encryptor.EncryptorUtil
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>com.liferay.portal.kernel</artifactId>
<version>version</version>
<scope>provided</scope>
</dependency>
2. При версии Liferay ниже 7.4.3.23-ga23
При более ранней версии алгоритм такой же, только необходимый энкриптор находится в пакете сom.liferay.petra.encryptor.Encryptor
Company company = LiferayPortletHelperUtil.getThemeDisplay().getCompany(); // получить дефолтную company.
Encryptor.encrypt(company.getKeyObj(), String.valueOf(user.getUserId()));
Зависимость мавена для пакета сom.liferay.petra.encryptor.Encryptor:
<dependency>
<groupId>com.liferay</groupId>
<artifactId>com.liferay.petra.encryptor</artifactId>
<version>version</version>
</dependency>