我正在研究如何集成或自定义登录模块,以便与公开为 RESTful API 的外部用户系统一起工作。
我看到了 AuthenticationHandler 接口(interface),但它似乎只从用户请求中提取凭证。然后构建 AuthenticationInfo 对象并将其发送到 CRX 登录模块以进行身份验证和授权。 我坚持到了这一点。
有人知道 AEM 6.0 中这个问题的解决方案吗?
感谢并感谢您的帮助。
最佳答案
您可能想要创建自定义的 ExternalIdentityProvider,而不是自定义的 AuthenticationHandler。一旦您创建并安装了自己的身份提供者 bundle ,AEM 就会将其用于所有登录请求。本质上,AEM 将对所有已注册的身份提供者调用“身份验证”方法(根据其 JAAS 排名排序),如果任何模块成功登录,则认为该用户已通过身份验证。您也不必担心创建 JCR 用户记录,因为默认的同步处理程序会自动为您处理。
您需要做的就是创建一个实现 ExternalIdentityProvider 的新服务类,并实现 getName 和 authenticate 方法。据我所知,其他方法不会在正常登录场景中使用。您还需要配置“Apache Jackrabbit Oak 外部登录模块”,以便它知道您的身份提供者的名称以及 JAAS 排名。
有关外部登录模块的更多详细信息,请参见此处:http://jackrabbit.apache.org/oak/docs/security/authentication/externalloginmodule.html
您还可以通过查看 GitHub 中的 oak-auth-ldap 模块找到一个如何实现自定义外部登录模块的工作示例:https://github.com/apache/jackrabbit-oak
关于java - 如何将登录模块与在 AEM 6.0 中公开为 RESTful API 的外部用户系统集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26485551/