3

Я пытаюсь внедрить процесс регистрации пользователей и входа в систему | SSO с использованием Spring Security Oauth 2.0 и Google в качестве поставщика проверки подлинности.Регистрация и регистрация | SSO с использованием Spring Security OAuth 2.0

  • Как мне начать регистрацию и логин? Какой фильтр необходимо применять?
  • В потоке регистрации мне понадобятся данные пользователя (имя, адрес электронной почты), которые являются частью успешного ответа на авторизацию, для сохранения в моей локальной базе данных. Как мне это обработать?

  • В чем цель oauth2: client id = "oauth2ClientFilter"?

Это как мой файл контекст приложения выглядит следующим образом: -

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:c="http://www.springframework.org/schema/c" 
xmlns:security="http://www.springframework.org/schema/security" 
xmlns:oauth2="http://www.springframework.org/schema/security/oauth2" 
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd 
    http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2.xsd 
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

<!-- DispatcherServlet Context: defines this servlet's request-processing 
    infrastructure --> 

<!-- Enables the Spring MVC @Controller programming model --> 
<annotation-driven /> 

<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
    up static resources in the ${webappRoot}/resources directory --> 
<resources mapping="/resources/**" location="/resources/" /> 

<!-- Resolves views selected for rendering by @Controllers to .jsp resources 
    in the /WEB-INF/views directory --> 
<beans:bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <beans:property name="prefix" value="/WEB-INF/views/" /> 
    <beans:property name="suffix" value=".jsp" /> 
</beans:bean> 

<context:component-scan base-package="com.samsoft.spring" /> 

<!-- ================================================== SECURITY START ================================================== --> 

<security:http security="none" pattern="/" /> 
<security:http security="none" pattern="/resources/**" /> 
<security:global-method-security 
    secured-annotations="enabled" /> 

<security:http auto-config="true"> 
    <security:intercept-url pattern="/**" 
     requires-channel="https" access="IS_AUTHENTICATED_FULLY" /> 
    <security:custom-filter ref="oauth2ClientFilter" 
     after="EXCEPTION_TRANSLATION_FILTER" /> 
</security:http> 
<oauth2:client id="oauth2ClientFilter" /> 

<oauth2:resource id="googleOauth2Resource" type="authorization_code" 
    client-id="530420474177-clientid.apps.googleusercontent.com" 
    client-secret="client-secret-here" access-token-uri="https://accounts.google.com/o/oauth2/token" 
    user-authorization-uri="https://accounts.google.com/o/oauth2/auth" 
    scope="https://www.googleapis.com/auth/calendar" 
    client-authentication-scheme="form" 
    pre-established-redirect-uri="https://ohad.sealdoc.com/oauth2-client/hello" /> 

<oauth2:rest-template id="googleOauthRestTemplate" 
    resource="googleOauth2Resource" /> 

<security:authentication-manager> 
    <security:authentication-provider> 
     <security:user-service> 
      <security:user name="test" authorities="ROLE_USER" password="test"/> 
     </security:user-service> 
    </security:authentication-provider> 
</security:authentication-manager> 



<!-- ================================================== SECURITY END ================================================== --> 

EDIT

Я реализован таким же случай использование с помощью Spring Security OpenID по: -

  1. Объявление openid: тег формы с привязкой к обмену
  2. Расширение UserDetailsService, как описано here.

Я ищу эквивалентную конфигурацию для Oauth 2.0.

+0

уточните ваш вопрос: что не работает? авторизоваться? постановка на учет? вы работаете с oAuth или openID? в обоих, зачем вам нужна регистрация? (если вы не зарегистрируете oauth-client ...) – OhadR

+0

@OhadR: просмотрите обновленный вопрос. –

ответ

0

Вы зарегистрировали свое клиентское приложение в Google? так работает oAuth2 ... клиент должен быть зарегистрирован в провайдере и получить идентификатор клиента и секрет клиента. в вашем XML, похоже, вы не зарегистрировали:

client-secret="client-secret-here" 

имеет прочитанный на Google oAuth2 docs

UPDATE

Что касается обновленного вопроса, я думаю, что поведение, которое вы видите, из-за того, что ваше приложение должно разрешить доступ к «/ oauth2/google» в файле security.xml.

+0

Да, я зарегистрировался. В теге ресурса есть ключ клиента и секрет. –

+0

См. Обновленный вопрос. –

Смежные вопросы