Шов: войти, используя внешнее приложение SSO - PullRequest
1 голос
/ 26 октября 2009

У меня есть приложение Seam, которое должно использовать внешнее для входа в систему. Логика следующая:

  • Мое приложение отправляет пользователя на внешний URL-адрес единого входа
  • Пользователь делает то, что требуется для аутентификации там
  • В случае успеха внешнее приложение перенаправляет пользователя обратно в мое приложение со случайным токеном
  • Мой код должен связаться с внешним приложением через HTTP с переданным токеном и получить взамен полную информацию о пользователе

Довольно просто. Но я застрял.

Перенаправление приходит в / seam / resources / token. Я намеревался получить удостоверение от сеанса, заполнить его токеном и выполнить аутентификацию. Но в обработчике ресурсов пользовательский сеанс явно не виден: контекст сеанса имеет значение null. (

Я попытался сделать LifeCycle.beginCall там, и это работает в некотором смысле: логика аутентификации работает, но результат никогда не становится доступным для пользователя (сеанс пользователя все еще имеет пустую идентификационную информацию).

Что я делаю не так?

P.S. Вот более-менее полный код моего обработчика ресурсов. Для краткости ведение журнала и другие несвязанные вещи.

@Scope(ScopeType.APPLICATION)
@Name("tokenResource")
// @BypassInterceptors
public class TokenResource extends AbstractResource {
    @Override
    public String getResourcePath() {
        return "/token";
    }

    @Override
    public void getResource(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
        String token = request.getParameter("token");

        // woot?
        Lifecycle.beginCall();

        Identity identity = Identity.instance(); 
        MyIdentity mid = (MyIdentity) identity;
        mid.setToken(token);
        mid.login();

        response.sendRedirect("/home.seam");
    }

Ответы [ 2 ]

0 голосов
/ 28 июня 2010

Возможно, выдать идентификатор обратно в контекст сеанса?

0 голосов
/ 12 мая 2010

Вы можете использовать JBoss Picketlink для интеграции с OpenID и Google. В пачке, которую они предлагают, есть пара примеров, и, похоже, было бы легко использовать ее с Seam.

Единственное, что нужно заметить и позаботиться, - это то, что проект находится на ранних стадиях, поэтому могут появиться несколько ошибок.

...