jr.*_*jr. 55 authentication spring spring-security
有人能告诉我一个AuthenticationManager和一个AuthenticationProviderSpring Security 之间的区别吗?
它们是如何使用的以及如何调用它们.我的理解是,一个SecurityFilter会调用对AuthenticationManager一个Authentication对象进行身份验证吗?但那么它在AuthenticationProvider哪里发挥作用?
谢谢!
Han*_*eek 36
我认为AuthenticationManager委托将持久用户信息提取到一个或多个AuthenticationProviders.身份验证提供程序(DaoAuthenticationProvider, JaasAuthenticationProvider, LdapAuthenticationProvider, OpenIDAuthenticationProvider例如)专门访问特定的用户信息存储库.参考手册的这一部分提到了其他一些内容.它说:
您可能希望使用ProviderManager注册其他AuthenticationProvider bean,并且可以使用带有ref属性的元素执行此操作,其中该属性的值是要添加的提供者bean的名称.
换句话说,您可以指定多个AuthenticationProviders,例如,一个在LDAP数据库中查找用户,另一个在SQL数据库中查找用户.
uir*_*han 10
从春季参考
AuthenticationManager只是一个接口,因此实现可以是我们选择的任何东西
Spring Security中的默认实现称为ProviderManager,它不是处理身份验证请求本身,而是委托给已配置的AuthenticationProvider列表,每个查询器依次查询它们是否可以执行身份验证.每个提供程序将抛出异常或返回完全填充的Authentication对象.
此外,如果您检查AuthenticationManager,ProviderManager和AuthenticationProvider的源代码,您可以清楚地看到这一点.
ProviderManager实现AuthenticationManager接口,它具有AuthenticationProviders列表.因此,如果您想拥有自定义身份验证机制,则需要实现新的AuthenticationProvider.
Reh*_*han 10
AuthenticationManager 和 AuthenticationProvider 都是接口。它们在 Spring Security Flow 中具有不同的功能。
Ref-
Spring Boot + Spring 安全架构
| 归档时间: |
|
| 查看次数: |
18370 次 |
| 最近记录: |