Java 如何将登录模块与AEM 6.0中作为RESTful API公开的外部用户系统集成?

Java 如何将登录模块与AEM 6.0中作为RESTful API公开的外部用户系统集成?,java,aem,jackrabbit,crx,Java,Aem,Jackrabbit,Crx,我正在研究如何集成或定制登录模块,以便与作为RESTful API公开的外部用户系统一起工作 我看到了AuthenticationHandler接口,但它似乎只从用户请求中提取凭证。然后构建AuthenticationInfo对象并将其发送到CRX登录模块进行身份验证和授权。 我坚持在这一点上 有人知道AEM 6.0中的解决方案吗 感谢并感谢您的帮助。如果您正在寻找自定义身份验证模块,请访问 您可能希望创建自定义ExternalIdentityProvider,而不是自定义Authenticat

我正在研究如何集成或定制登录模块,以便与作为RESTful API公开的外部用户系统一起工作

我看到了AuthenticationHandler接口,但它似乎只从用户请求中提取凭证。然后构建AuthenticationInfo对象并将其发送到CRX登录模块进行身份验证和授权。 我坚持在这一点上

有人知道AEM 6.0中的解决方案吗


感谢并感谢您的帮助。

如果您正在寻找自定义身份验证模块,请访问

您可能希望创建自定义ExternalIdentityProvider,而不是自定义AuthenticationHandler。一旦您创建并安装您自己的身份提供程序包,AEM将考虑它的所有登录请求。本质上,AEM将对所有注册的身份提供者调用“authenticate”方法(按照JAAS排名的顺序),如果任何模块登录成功,它将认为该用户已通过身份验证。您也不必担心创建JCR用户记录,因为默认的同步处理程序将自动为您处理这些记录

您只需创建一个实现ExternalIdentityProvider的新服务类,并实现getName和authenticate方法。据我所知,其他方法不用于正常登录场景。您还需要配置“ApacheJackrabbitOak外部登录模块”,以便它知道您的身份提供者的名称以及JAAS排名

有关外部登录模块的更多详细信息,请访问:


通过查看GitHub中的oak auth ldap模块,您还可以找到如何实现自定义外部登录模块的工作示例:

谢谢您的指导。我面临着一个类似的场景(使用SOAP而不是REST),但是,在实现了自定义登录模块和自定义身份提供程序,并使用身份提供程序的名称配置了该模块之后,AEM仍然不调用该模块,或者甚至在调用我的任何方法之前它就失败了。我得到了以下信息:org.apache.sling.auth.core.impl.SlingAuthenticator handleLoginFailure:无法验证null:登录失败:所有模块ignoredI能够解决所有问题,现在CustomIdentityProvider已正确配置,并使用AEM中提供的默认外部登录模块。但是,快速提问,如果外部服务提供了一种方法,您知道AEM中如何管理密码更新吗?嗨!我正在实现一个类似的场景,您是否成功注册了自定义身份提供程序?我在尝试将自定义IDP与默认的ExternalLoginModule集成时遇到了“找不到名为…”的IDP。这是由于依赖关系问题,6.1 SP1的pom.xml uber jar与SP2执行的Oak升级冲突。在另一种情况下,您是否必须在AEM中处理密码更新?