Я работаю над устаревшим проектом, который недавно был обновлен до AEM 6.3. Он использует общие куки для аутентификации пользователя в экземплярах AEM. Он специально использует TokenUtil
для создания учетных данных с помощью метода createCredentials
. Тем не менее, у меня было это требование, где я должен использовать Service User для входа вместо обычного loginAdministrative
.
Я пытался проверить подлинность хранилища перед созданием токена.
this.repositorySession = this.repository.loginService("myAuthenticatorService", "");
authInfo = TokenUtil.createCredentials(request, response, this.repository, uid, true);
Очевидно, createCredentials
делает вызовы loginAdministrative
, что нежелательно. Таким образом, даже если я аутентифицирую SlingRepository
против пользователя службы, он будет выдавать RepositoryException
.
// <editor-fold defaultstate="collapsed" desc="Compiled Code">
/* 0: aconst_null
* 1: astore 5
* 3: aconst_null
* 4: astore 6
* 6: aload_2
* 7: aconst_null
* 8: invokeinterface org/apache/sling/jcr/api/SlingRepository.loginAdministrative:(Ljava/lang/String;)Ljavax/jcr/Session;
* 13: astore 5
* 15: new org/apache/sling/auth/core/spi/AuthenticationInfo
* 18: dup
* 19: ldc TOKEN
* 21: aload_3
* 22: invokespecial org/apache/sling/auth/core/spi/AuthenticationInfo."<init>":(Ljava/lang/String;Ljava/lang/String;)V
....
Выше приведены выдержки из Netbeans, проверяющие скомпилированный код.
Мой вопрос: есть ли альтернативы для правильного создания токена для данного идентификатора пользователя, не полагаясь на loginAdministrative
? Прежде чем я попытаюсь реализовать свою собственную TokenUtil
, взглянем на оригинальную реализацию ..
пс. я мог бы просто добавить свой пакет (ы) в Фрагмент конфигурации белого списка администратора входа в систему Apache Sling , но я не думаю, что это выживет в долгосрочной перспективе ..
EDIT
Кажется, я не могу реализовать свой собственный TokenUtil в качестве обходного пути. Adobe не выставляла пакет com.day.crx.sling.crx-auth-token
для версии 2.5.30. Только в репозитории Maven 2.4.30 публично доступно. Я должен был связаться с командой дневного ухода за помощью. Метод TokenAuthenticationHandler.getRepositoryId(bool)
доступен только для 2.5.30, который используется AEM 6.3.