A natureza da segurança da primavera
A segurança da primavera é essencialmente uma série de filtros, que são então inseridos na cadeia de filtro como um filtro separado, chamado filterChainProxy. Como mostrado na figura.
De fato, pode haver múltiplas cadeia de filtro sob filtro -propóxi para verificar diferentes URLs, e os filtros pertencentes na cadeia de filtros aumentarão ou diminuirão automaticamente de acordo com o serviço definido. Portanto, não há necessidade de exibir e definir esses filtros, a menos que você queira implementar sua própria lógica.
Categorias -chave
Autenticação
Autenticação é uma interface usada para representar informações de autenticação do usuário. Antes que o usuário efetue login para autenticar, as informações relevantes serão encapsuladas em um objeto da classe de implementação específica da autenticação. Depois que a autenticação de login for bem -sucedida, um objeto de autenticação com informações mais abrangentes, incluindo permissões de usuários e outras informações, será gerado e, em seguida, salvo no SecurityContext mantido pelo SecurityContexholder para obter programas subsequentes, como autenticação de direitos de acesso.
AuthenticationManager
A principal interface usada para verificação é o AuthenticationManager, que possui apenas um método:
interface pública AuthenticationManager {autenticação Authentication (autenticação Authentication) lança autenticaçãoException;}Pode haver três situações após a execução do método autenticate ():
A verificação é bem -sucedida e uma autenticação com as informações do usuário é retornada.
A verificação falhou e uma exceção da AuthenticationException foi lançada.
Incapaz de julgar, retornar nulo.
ProvedorManager
O ProviderManager é a implementação mais comum do AuthenticationManager acima. Ele não lida com a verificação por si só, mas delega a verificação da lista AuthenticationProvider que ela configura e, em seguida, chama cada AuthenticationProvider, por sua vez, para autenticação. Nesse processo, desde que um providor de autenticação seja autenticado com sucesso, não será mais verificada. Esse resultado de autenticação será usado diretamente como resultado da autenticação do proverManager.
Processo de certificação
Os usuários fazem login com seu nome de usuário e senha.
A segurança da primavera encapsula o nome de usuário e a senha obtidos em uma classe de implementação da interface de autenticação, como a usuária usernamePasswordenticationToken comumente usada.
Passe o objeto de autenticação gerado acima para o AuthenticationManager Implementation Class ProviderManager para autenticação.
O ProviderManager chama cada autenticaçãoProvider, por sua vez, para autenticação. Depois que a autenticação for bem -sucedida, um objeto de autenticação encapsula as permissões do usuário e outras informações serão retornadas.
Atribua o objeto de autenticação retornado pelo autenticationManager ao atual SecurityContext.
Verificação personalizada
Com as reservas de conhecimento acima, você pode personalizar o método de verificação. Pelo exposto, podemos ver que, de fato, os optadores de autenticação são realmente usados para executar operações de verificação. Portanto, se você deseja personalizar o método de verificação, só precisará implementar seu próprio AuthenticationProvider e adicione -o ao provedorManager.
Personalize AuthenticationProvider
@ComPonentPublic Classe CustomAuthentationProvider implementa AuthenticationProvider {@Override public Authentication Authentication (Authentication Authentication) lança AuthenticationException {String Name = Authentication.getName (); String senha = autenticação.getCredentials (). Tostring (); if (deve ser ()) {// usar as credenciais // e autenticar contra o sistema de terceiros retornar novo UsernamePassWordAuthenticationToken (nome, senha, new ArrayList <> ()); } else {return null; }} @Override public boolean suporta (classe <?> Autenticação) {return autentication.equals (usernamePasswordAuthenticationToken.class); }}O método Supports () aceita um parâmetro de autenticação para determinar se a autenticação passada é um tipo que o opticationProvider pode suportar.
Registre a AuthenticationProvider
Agora registre o AuthenticationProvider que você acabou de criar no proverManager e todas as operações são concluídas.
@Configuration@EnableWebSecurity@componentsCan ("org.baeldung.security") Classe public SecurityConfig Extende o WebSecurityConfigureRAdApter {@AUTOWIRED PRIVADO ATIVATIVATIONATHENTACIONAL AuthProvider; @Override Protected void Configure (autenticationManagerBuilder Auth) lança Exceção {auth.authenticationProvider (AuthProvider); } @Override Protected void Configure (httpsecurity http) lança exceção {http.authorizerequests (). AnyRequest (). Autenticated () .and () .httpbasic (); }}Resumir
O exposto acima é o processo de verificação de segurança da primavera e métodos de verificação personalizada introduzidos pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!