Использование TokenUtil для создания учетных данных в AEM 6.3
Я работаю над устаревшим проектом, который недавно был обновлен до 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 Login, но я не думаю, что это выживет в долгосрочной перспективе..
РЕДАКТИРОВАТЬ Кажется, я не могу реализовать свой собственный 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.