Sto usando Spring 3 e Spring Security. Sto integrando account social ad esempio: Facebook, Twitter e Google. Sto usando la versione di javascript sdk ma il mio problema è che posso registrare un utente ma non sono sicuro di come autenticarli.Implementazione del social media login in spring security
Ad esempio:
Quando l'utente fa clic su uno dei link (Facebook, Twitter, Google) nuova finestra di dialogo viene aperto dopo autenticato posso ottenere i loro dettagli del profilo di base: e-mail, id, il nome, le immagini e Ho passato tutte queste informazioni al mio controller usando ajax quale servizio di chiamata e dao per salvare l'utente se l'utente non è già registrato.
Fino a qui tutto funziona bene per me. Ho usato l'id utente e li ho crittografati usando salt e salvandolo nel database come password (non sono sicuro se questo è un modo corretto per affrontarlo o meno) ma ora la mia confusione è come posso autenticare un utente e permetterli per accedere al sistema.
Il mio file security.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd">
<!-- Configuration for master level user login -->
<http auto-config="true" use-expressions="true"
disable-url-rewriting="true">
<!-- <csrf /> -->
<headers>
<cache-control />
<content-type-options />
<hsts />
<frame-options />
<xss-protection />
</headers>
<!-- requires-channel="https" -->
<intercept-url pattern="/favicon.ico" access="permitAll" />
<intercept-url pattern="/login*" access="permitAll" />
<intercept-url pattern="/login/facebook-login*" access="permitAll" />
<intercept-url pattern="/validateUserCredentials*"
access="permitAll" />
<intercept-url pattern="/register*" access="permitAll" />
<intercept-url pattern="/activation*" access="permitAll" />
<intercept-url pattern="/restore*" access="permitAll" />
<intercept-url pattern="/resend*" access="permitAll" />
<intercept-url pattern="/resources/**" access="permitAll" />
<intercept-url pattern="/license*"
access="hasAnyRole('${role.admin}', '${role.master}')" />
<intercept-url pattern="/**"
access="hasAnyRole('${role.admin}', '${role.master}', '${role.owner}', '${role.simple}')" />
<access-denied-handler error-page="/denied" />
<form-login login-page="/login" default-target-url="/logged"
authentication-failure-url="/loginfailed" login-processing-url="/j_spring_security_check" />
<logout logout-success-url="/login" invalidate-session="true"
delete-cookies="JSESSIONID,SPRING_SECURITY_REMEMBER_ME_COOKIE" />
<session-management session-fixation-protection="migrateSession">
<concurrency-control error-if-maximum-exceeded="true"
max-sessions="1" expired-url="/login" />
</session-management>
<remember-me token-validity-seconds="86400" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider ref="daoAuthenticationProvider" />
</authentication-manager>
<beans:bean id="daoAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<beans:property name="userDetailsService" ref="userDetailsService" />
<beans:property name="saltSource" ref="saltSource" />
<beans:property name="passwordEncoder" ref="passwordEncoder" />
</beans:bean>
<beans:bean id="passwordEncoder"
class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" />
<beans:bean id="saltSource"
class="org.springframework.security.authentication.dao.ReflectionSaltSource">
<beans:property name="userPropertyToUse" value="salt" />
</beans:bean>
<beans:bean id="userDetailsService" name="userAuthenticationProvider"
class="com.luffy.security.AuthenticationUserDetailService">
</beans:bean>
</beans:beans>
Qualsiasi aiuto sarà apprezzato. Ho fatto tutto il possibile per risolvere questo problema, ma non sono in grado di trovare una soluzione affidabile.
Grazie per la risposta che cercavo qualcosa di simile da molto tempo, ma ho ancora un problema con la soluzione che è quando ho autenticare l'utente FB come posso autenticare e autorizzare lo stesso utente in primavera in modo che la primavera possa convalidare l'utente. Scusa se l'hai trovato stupido Sono bloccato da un bel po 'di tempo – Luffy
Ive ha aggiunto l'implementazione personalizzata? Spero che sia d'aiuto. Un po 'di configurazione è necessaria in primavera per gestire customAuthentication. –