Másodlagos Facebook-bejelentkezés a Spring Social szolgáltatással

1. Áttekintés

Ebben az oktatóanyagban arra összpontosítunk, hogy új Facebook bejelentkezést adjon hozzá egy meglévő űrlap-bejelentkezési alkalmazáshoz.

A tavaszi szociális támogatást arra fogjuk használni, hogy kapcsolatba lépjünk a Facebook-szal, és hogy a dolgok tiszták és egyszerűek maradjanak.

2. Maven konfiguráció

Először hozzá kell tennünk tavasz-szociális-facebook függőség a mi pom.xml:

 org.springframework.social spring-social-facebook 2.0.3.KÖZLEMÉNY 

3. Biztonsági konfiguráció - Csak űrlap bejelentkezés

Kezdjük először az egyszerű biztonsági konfigurációval, ahol csak űrlap alapú hitelesítéssel rendelkezünk:

@Configuration @EnableWebSecurity @ComponentScan (basePackages = {"com.baeldung.security"}) public SecurityPonfig kiterjeszti a WebSecurityConfigurerAdapter {@Autowired private UserDetailsService userDetailsService; A @Orride védett void konfiguráció (AuthenticationManagerBuilder auth) dobja a Kivételt {auth.userDetailsService (userDetailsService); } A @Orride protected void configure (HttpSecurity http) dobja a {http .csrf (). Disable () .authorizeRequests () .antMatchers ("/ login *"). AllowAll () .anyRequest (). Hitelesített () .és ( ) .formLogin (). loginPage ("/ login"). allowAll (); }}

Nem fogunk sok időt tölteni ezzel a konfigurációval - ha jobban meg akarja érteni, nézze meg az űrlap bejelentkezési cikkét.

4. A Facebook tulajdonságai

Ezután konfiguráljuk a Facebook tulajdonságait a alkalmazás.tulajdonságok:

spring.social.facebook.appId = YOUR_APP_ID spring.social.facebook.appSecret = YOUR_APP_SECRET

Vegye figyelembe, hogy:

  • A beszerzéshez létre kell hoznunk egy Facebook alkalmazást appId és appSecret
  • A Facebook alkalmazás Beállítások között győződjön meg arról, hogy hozzáadja a „Platform” webhelyet és // localhost: 8080 / a „Webhely URL”

5. Security Config - Facebook hozzáadása

Most adjunk hozzá egy új módszert a rendszeren történő hitelesítéshez - a Facebook vezérli:

a public class SecurityConfig kiterjeszti a WebSecurityConfigurerAdapter {@Autowired private FacebookConnectionSignup facebookConnectionSignup; @Value ("$ {spring.social.facebook.appSecret}") String appSecret; @Value ("$ {spring.social.facebook.appId}") Karakterlánc appId; A @Orride protected void configure (HttpSecurity http) a {http .authorizeRequests () .antMatchers ("/ login *", "/ signin / **", "/ signup / **") kivételt dobja. @Bean public ProviderSignInController szolgáltatóSignInController () {ConnectionFactoryLocator connectionFactoryLocator = connectionFactoryLocator (); UsersConnectionRepository usersConnectionRepository = getUsersConnectionRepository (connectionFactoryLocator); [(InMemoryUsersConnectionRepository) usersConnectionRepository] .setConnectionSignUp (facebookConnectionSignup); return new ProviderSignInController (connectionFactoryLocator, usersConnectionRepository, new FacebookSignInAdapter ()); } privát ConnectionFactoryLocator connectionFactoryLocator () {ConnectionFactoryRegistry register = új ConnectionFactoryRegistry (); register.addConnectionFactory (új FacebookConnectionFactory (appId, appSecret)); visszatérési nyilvántartás; } privát UsersConnectionRepository getUsersConnectionRepository (ConnectionFactoryLocator connectionFactoryLocator) {return new InMemoryUsersConnectionRepository (connectionFactoryLocator); }}

Nézzük meg alaposan az új konfigurációt:

  • használunk egy ProviderSignInController a Facebook-hitelesítés engedélyezéséhez, amire két dologra van szükség:

    először a ConnectionFactoryLocator regisztrált a FacebookConnectionFactory az általunk korábban meghatározott Facebook tulajdonságokkal.

    másodszor egy InMemoryUsersConnectionRepository.

  • elküldésével a POST nak nek "/ signin / facebook”- ez a vezérlő kezdeményezi a felhasználói bejelentkezést a Facebook szolgáltató segítségével
  • létrehozunk egy SignInAdapter hogy kezeljük a bejelentkezési logikát alkalmazásunkban
  • és felállítjuk a ConnectionSignUp implicit módon kezelni a regisztráló felhasználókat, amikor először hitelesítenek a Facebookon

6. A bejelentkezési adapter

Egyszerűen fogalmazva, ez az adapter híd a fenti vezérlő - a Facebook felhasználói bejelentkezési folyamatot vezérlő - és a saját helyi alkalmazásunk között:

public class FacebookSignInAdapter implementálja a SignInAdapter {@Orride public String signIn (String localUserId, Connection connection, NativeWebRequest request) {SecurityContextHolder.getContext (). setAuthentication (new UsernamePasswordAuthenticationToken (connection.getDisplayName (), null, Array.as (null, Array.as ")))); return null; }}

Ne feledje, hogy a Facebook használatával bejelentkezett felhasználóknak szerepük lesz FACEBOOK FELHASZNÁLÓ, míg az űrlap használatával bejelentkezett felhasználóknak szerepük lesz FELHASZNÁLÓ.

7. Csatlakozás regisztrálása

Amikor egy felhasználó először hitelesít a Facebook-on, nincs meglévő fiókja az alkalmazásunkban.

Itt kell létrehoznunk számukra ezt a fiókot; használjuk a ConnectionSignUp a felhasználó létrehozási logikájának meghajtásához:

@Service public class FacebookConnectionSignup megvalósítja a ConnectionSignUp {@Autowired private UserRepository userRepository; @Orride public String execute (Connection connection) {Felhasználó felhasználó = új Felhasználó (); user.setUsername (kapcsolat.getDisplayName ()); user.setPassword (randomAlphabetic (8)); userRepository.save (felhasználó); return user.getUsername (); }}

Amint láthatja, létrehoztunk egy fiókot az új felhasználó számára - az ő felhasználásával Megjelenítendő név mint felhasználónév.

8. Az elülső rész

Végül vessünk egy pillantást a kezelőfelületünkre.

Most támogatni fogjuk ezt a két hitelesítési folyamatot - bejelentkezési űrlap és Facebook - a bejelentkezési oldalon:

 Ön kijelentkezett. Hiba történt, próbálkozzon újra 

Végül - itt van a index.html:

Felhasználónév

Kijelentkezés

Felhasználói hatóságok

Vegye figyelembe, hogy ez az indexoldal hogyan jeleníti meg a felhasználóneveket és a jogosultságokat.

És ennyi - most kétféleképpen lehet hitelesíteni az alkalmazást.

9. Következtetés

Ebben a gyors cikkben megtanultuk a használatát tavasz-szociális-facebook másodlagos hitelesítési folyamat megvalósításához alkalmazásunkhoz.

És természetesen, mint mindig, a forráskód is teljes mértékben elérhető a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found