как получить объект HTTP-запроса в классе, реализующем jackrabbit ExternalIdentityProvider

Я реализую собственный внешний поставщик удостоверений, и для этого мне нужно реализовать класс ExternalIdentityProvider из jackrabbit.

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

В обычном случае вам нужно будет передать j_username и j_password, и вы можете получить их из значений объекта SimpleCredentials.

Мой вопрос заключается в том, что, поскольку мне нужно передать дополнительный параметр формы, например, идентификатор LinkedIn в моем случае, как мне этого добиться?

    @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?
    }

Любой вклад высоко ценится.

Спасибо!


person Homer    schedule 16.01.2015    source источник


Ответы (1)


Правильный способ справиться с этим - иметь собственный AuthenticationHandler, который создает экземпляр определенного объекта Credentials с любыми параметрами, которые вам нужны.

Тем не менее, если вы интегрируетесь с LinkedIn (а это в AEM), вам будет лучше интегрироваться с существующим OAuth AuthenticationHandler. Существует поддержка OOTB для Facebook и Twitter, но поставщик OAuth предназначен для подключения к различным поставщикам услуг OAuth.

person Justin Edelson    schedule 16.01.2015