Giriş
Açıklaması şöyle. Yani Spring Security ile kendi AuthenticationProvider nesnemi kullanabilirim.
You can implement the authentication provider and build your custom authentication. public class customAuth implements AuthenticationProvider then override the authenticate method
Kendi AuthenticationProvider nesnemi takmak için şöyle yaparız
@Configuration@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.authenticationProvider(myFooAuthenticationProvider);auth.authenticationProvider(myBarAuthenticationProvider);}}
Tanımlama
Şöyle yaparız
- Eğer kullanıcının şifresi yanlış, blocklanmış vs gibi şeyleri tespit edersek AuthenticationException fırlatırız. Örneğin BadCredentialsException
Şöyle yaparız
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
...
}
authenticate metodu- Eğer kullanıcının şifresi yanlış, blocklanmış vs gibi şeyleri tespit edersek AuthenticationException fırlatırız. Örneğin BadCredentialsException
- Eğer authentication işlemini pas geçmek istiyorsak null döneriz
- Eğer kullanıcıyı doğrularsak UsernamePasswordAuthenticationToken nesnesi döneriz.
Örnek
Şöyle yaparız. Kodda parametre olarak geçilen authentication nesnesine yeni değer atanıyor gibi gösterilse bile önemli değil. Sadece yeni nesne dönmek yeterli.
@Override
public Authentication authenticate(Authentication authentication) throws
AuthenticationException {
String name = authentication.getName();
String password = authentication.getCredentials().toString();
List<SimpleGrantedAuthority> auths = ...;
authentication = new UsernamePasswordAuthenticationToken(name, password, auths);
return authentication;
}
ÖrnekŞöyle yaparız.
@Componentpublic class DbAuthProvider implements AuthenticationProvider {private final UserDetailsService userDetailsService;private final PasswordEncoder passwordEncoder;...@Overridepublic Authentication authenticate(Authentication authentication)
throws AuthenticationException {if (!StringUtils.endsWithIgnoreCase(authentication.getPrincipal().toString(),
"@dbauth.com")) {// this user is not supported by DB authenticationreturn null;}UserDetails user = userDetailsService
.loadUserByUsername(authentication.getPrincipal().toString());String rawPw = authentication.getCredentials() == null ? null :
authentication.getCredentials().toString();if (passwordEncoder.matches(rawPw, user.getPassword())) {return new UsernamePasswordAuthenticationToken(user.getUsername(),
rawPw,Collections.emptyList());} else {throw new BadCredentialsException("Bad password");}}@Overridepublic boolean supports(Class<?> aClass) {return aClass.isAssignableFrom( }}
Hiç yorum yok:
Yorum Gönder