使用TokenUtil在AEM 6.3中创建凭据

时间:2018-04-27 03:39:26

标签: aem sling jcr

我正在研究最近升级到AEM 6.3的遗留项目。它使用共享cookie在AEM实例之间对用户进行身份验证。它专门使用TokenUtil通过createCredentials方法创建凭据。但是,我有这个要求,我应该使用服务用户登录而不是通常的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的情况下为给定的用户ID正确创建令牌?在我尝试通过查看原始实现来实现我自己的TokenUtil之前..

PS。我可以将我的软件包添加到 Apache Sling登录管理白名单配置片段,但我认为这不会在长期内存活下来。

修改 我似乎无法实现我自己的TokenUtil作为一种解决方法。 Adobe没有公开版本2.5.30的com.day.crx.sling.crx-auth-token包。仅在Maven资源库2.4.30公开发布。我应该联系日间护理团队寻求帮助。方法TokenAuthenticationHandler.getRepositoryId(bool)仅适用于AEM 6.3使用的2.5.30。

0 个答案:

没有答案