如何在实现jackrabbit ExternalIdentityProvider的类中获取HTTP请求对象

时间:2015-01-16 06:11:41

标签: cq5 aem jackrabbit crx

我正在实现自定义外部身份提供程序,为此,我需要从jackrabbit实现ExternalIdentityProvider类。

http://jackrabbit.apache.org/oak/docs/security/authentication/externalloginmodule.html

在正常情况下,你需要传递j_username和j_password,你可以从值SimpleCredentials对象中获取这些

我的问题是,因为在我的情况下我需要传递额外的表单参数例如linkedin ID,我该如何实现呢?

    @Component(
            policy = ConfigurationPolicy.REQUIRE
    )
    @Service
    public class RDBMSIdentityProvider implements ExternalIdentityProvider {

    @Override
    public ExternalUser authenticate(Credentials credentials)
            throws ExternalIdentityException, LoginException {
          //i can get username / password from  credentials object
          //how to get additional parameters from http request object?
    }

非常感谢任何输入。

谢谢!

1 个答案:

答案 0 :(得分:0)

处理此问题的正确方法是拥有一个自定义AuthenticationHandler,它使用您需要的任何参数创建特定Credentials对象的实例。

也就是说,如果您正在与LinkedIn集成(这是在AEM中),那么通过与现有OAuth AuthenticationHandler集成,您将获得更好的服务。 Facebook和Twitter都有OOTB支持,但OAuth提供商可以插入不同的OAuth服务提供商。