Spring Security Authentication Provider

1. Oversikt

Denne opplæringen viser hvordan du setter opp en Autentiseringsleverandør i vårsikkerhet for å gi ekstra fleksibilitet sammenlignet med standardscenariet ved å bruke en enkel UserDetailsService.

2. Autentiseringsleverandøren

Spring Security tilbyr en rekke alternativer for å utføre autentisering. Disse følger en enkel kontrakt - en Godkjenning forespørsel behandles av en AuthenticationProvider og et fullstendig godkjent objekt med full legitimasjon returneres.

Standard og vanligste implementering er DaoAuthenticationProvider - som henter brukeropplysningene fra en enkel, skrivebeskyttet bruker DAO - UserDetailsService. Denne brukerinformasjonstjenesten har bare tilgang til brukernavnet for å hente hele brukerenheten. Dette er nok for de fleste scenarier.

Flere tilpassede scenarier må fremdeles få tilgang til det fulle Godkjenning be om å kunne utføre autentiseringsprosessen. For eksempel når du autentiserer mot noen eksterne tredjeparts tjenester (for eksempel Crowd) - begge brukernavn og passord fra autentiseringsforespørselen vil være nødvendig.

For disse mer avanserte scenariene må vi definere en egendefinert godkjenningsleverandør:

@Komponent offentlig klasse CustomAuthenticationProvider implementerer AuthenticationProvider {@Override public Authentication authenticate (Authentication authentication) kaster AuthenticationException {String name = authentication.getName (); Strengpassord = authentication.getCredentials (). ToString (); hvis (shouldAuthenticateAgainstThirdPartySystem ()) {// bruker legitimasjonen // og autentiserer mot tredjepartssystemet, returner nytt UsernamePasswordAuthenticationToken (navn, passord, ny ArrayList ()); } annet {return null; }} @Override public boolean supports (Class authentication) {return authentication.equals (UsernamePasswordAuthenticationToken.class); }}

Legg merke til at de tildelte myndighetene setter tilbake Godkjenning objektet er tomt. Dette er fordi myndighetene selvfølgelig er applikasjonsspesifikke.

3. Registrer autentleverandøren

Nå som vi har definert godkjenningsleverandøren, må vi spesifisere den i XML-sikkerhetskonfigurasjonen ved hjelp av den tilgjengelige støtte for navneområdet:

4. Java-konfigurasjon

La oss ta en titt på den tilsvarende Java-konfigurasjonen:

@Configuration @EnableWebSecurity @ComponentScan ("com.baeldung.security") offentlig klasse SecurityConfig utvider WebSecurityConfigurerAdapter {@Autowired private CustomAuthenticationProvider authProvider; @ Override beskyttet ugyldig konfigurasjon (AuthenticationManagerBuilder auth) kaster Unntak {auth.authenticationProvider (authProvider); } @ Override-beskyttet tomkonfigurasjon (HttpSecurity http) kaster Unntak {http.authorizeRequests (). AnyRequest (). Autentisert (). Og (). HttpBasic (); }}

5. Utføre godkjenning

Å be om godkjenning fra klienten er i utgangspunktet det samme med eller uten denne tilpassede godkjenningsleverandøren på baksiden.

La oss bruke en enkel krølle kommando for å sende en autentisert forespørsel:

curl --header "Accept: application / json" -i --user user1: user1Pass // localhost: 8080 / spring-security-custom / api / foo / 1

I forbindelse med dette eksemplet har vi sikret REST API med grunnleggende godkjenning.

Og vi får tilbake forventet 200 OK fra serveren:

HTTP / 1.1 200 OK Server: Apache-Coyote / 1.1 Set-Cookie: JSESSIONID = B8F0EFA81B78DE968088EBB9AFD85A60; Path = / spring-security-custom /; HttpOnly Content-Type: application / json; charset = UTF-8 Transfer-Enoding: chunked Date: Sun, 02 Jun 2013 17:50:40 GMT

6. Konklusjon

I denne artikkelen diskuterte vi et eksempel på en tilpasset autentiseringsleverandør for Spring Security.

Den fulle implementeringen av denne veiledningen finner du i GitHub-prosjektet.


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