Sling 身份验证处理程序与登录模块

Sling authentication handler vs Login module

我在 Whosebug 中阅读了很多博客和 post,但无法准确理解哪一个适用于哪种情况。
到目前为止我的理解是,当用户需要重定向到 3rd 方系统进行身份验证时,应该编写自定义身份验证处理程序,然后将 AuthenticationInfo 对象发送到 DefaultLogin 模块。

现在,当需要将用户数据从第 3 方系统同步到 AEM 时,可以使用自定义登录模块。 在同步过程中,自定义登录模块还针对第 3 方对用户进行身份验证。但这也可以在身份验证处理程序中实现。

如果我查看开箱即用的 SAML 身份验证处理程序,那么它没有用于同步用户数据的登录模块,而是 SAML 身份验证处理程序本身同步用户数据。为什么在执行上会有这样的差异?哪个适用于哪个场景?登录模块是否提供额外的安全级别?

请注意,登录模块已被重写,现在它调用外部身份提供者。

外部身份提供者不仅同步用户数据,而且验证用户输入的凭据。让我们举一个例子,您需要根据 3rd 方系统对用户进行身份验证(这意味着您需要要求用户通过 extracthandler 方法中的身份验证处理程序输入用户名和密码)并且在用户输入 his/her 凭据后,您希望该凭据在授予存储库权限之前再次验证(在这种情况下,您需要编写外部身份提供程序)。一个例子可能是,一旦用户输入凭据,第 3 方系统就会生成一些令牌。现在,您可以通过调用第 3 方提供的某些 Web 服务端点,在您的外部身份提供者代码中验证此令牌。

更多详情here