Аутентификация OpenId и автоматическая регистрация с безопасностью Spring 3.0.2

Я реализую приложение, использующее пружинную безопасность 3.0.2 с входом в систему OpenId и регистрацией. Я могу войти в систему успешно, но если пользователь не регистрируется, я хочу сделать:

1) Получите некоторые атрибуты OpenId как электронная почта и имя.
2) Покажите пользователю форму регистрации только с этими двумя полями и заполненным OpenId URI.

Я искал много, но я не нашел "ellegant" способ сделать это. Интересно, могут ли некоторые из Вас выпустить решение реализовать эту стратегию в моем приложении.

Заранее спасибо.

8
задан xlluch 28 April 2010 в 18:41
поделиться

1 ответ

Вы не можете показать адрес электронной почты и имя до того, как пользователь зарегистрируется / войдет в систему, поскольку он должен сначала разрешить приложению доступ к своему профилю. Вы можете показать ему эту страницу с его openid, mail и т. Д. после того, как он вошел в систему.

Определите, какие атрибуты вы хотите использовать:

<openid-login login-page="/openidlogin.jsp" authentication-failure-url="/openidlogin.jsp?login_error=true">
  <attribute-exchange>
    <openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" count="2"/>
    <openid-attribute name="name" type="http://schema.openid.net/namePerson/friendly" />
  </attribute-exchange>
</openid-login>

А затем получить доступ к атрибутам после того, как пользователь вошел в систему:

OpenIDAuthenticationToken token = (OpenIDAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();
List<OpenIDAttribute> attributes = token.getAttributes();

Взгляните на пример из репозитория Spring и документацию поддержки OpenId .

5
ответ дан 5 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: