Ich benutze Feder 3 und Feder Sicherheit. Ich integriere soziale Accounts zum Beispiel: Facebook, Twitter und Google. Ich benutze dort Javascript sdk Version, aber mein Problem ist, dass ich einen Benutzer registrieren kann, aber ich bin nicht sicher, wie man sie authentifiziert.Implementierung von Social-Media-Login in Frühling Sicherheit
Zum Beispiel:
Wenn der Benutzer auf einen der Links (Facebook, Twitter, Google) geklickt neues Dialogfeld nach erfolgreicher Authentifizierung geöffnet wird, kann ich ihre grundlegenden Profildetails erhalten: E-Mail, id, name, Bilder und Ich habe all diese Informationen an meinen Controller mit Ajax übergeben, die den Service aufrufen und den Benutzer speichern, wenn der Benutzer noch nicht registriert ist.
Bis hier alles funktioniert gut für mich. Ich benutze Benutzer-ID und verschlüssle sie mit Salz und speichern Sie es in der Datenbank als ein Passwort (ich bin mir nicht sicher, ob dies eine korrekte Möglichkeit, damit umzugehen oder nicht), aber jetzt ist meine Verwirrung, wie kann ich einen Benutzer authentifizieren und erlauben um sich in das System einzuloggen.
Meine security.xml Datei
<?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>
Jede Hilfe geschätzt wird. Ich habe alles getan, was ich kann, um dieses Problem zu lösen, aber ich bin nicht in der Lage, eine zuverlässige Lösung zu finden.
Vielen Dank für die Antwort, die ich für so etwas wie dies von langer Zeit auf der Suche war, aber ich habe immer noch ein Problem mit der Lösung, die ist, wenn ich den Benutzer von FB authentifiziere Wie kann ich den gleichen Benutzer im Frühling authentifizieren und autorisieren, damit der Frühling den Benutzer bestätigen kann? Entschuldigung, wenn du es doof fandest, dass ich seit einiger Zeit daran festhalte – Luffy
Ive benutzerdefinierte Implementierung hinzugefügt? Ich hoffe es hilft. Ein wenig Konfiguration ist auf der Federseite erforderlich, um CustomAuthentication zu verarbeiten. –