Использование TokenUtil для создания учетных данных в AEM 6.3 - PullRequest
0 голосов
/ 27 апреля 2018

Я работаю над устаревшим проектом, который недавно был обновлен до 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.

...