本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

SpringSecurity的身份验证和授权流程是如何工作的?

网络教程 app 1℃

SpringSecurity的身份验证和授权流程是如何工作的

spring security 提供身份验证和授权机制,包括:身份验证:使用身份验证提供者检查用户凭证的有效性,如使用用户名和密码或 ldap 认证。授权:使用访问决策管理器比较用户权限和请求的 url,基于访问决策确定是否授予访问权限,例如 affirmativebased(任何匹配的角色即可允许访问)或 consensusbased(所有匹配的角色才能允许访问)。实战案例:rbac(基于角色的访问控制):使用 userdetailsservice 定义角色,使用 rolehierarchyvoter 建立角色层次结构,并使用 affirmativebased 访问决策管理器进行授权。

Spring Security 的身份验证和授权流程

身份验证

Spring Security 通过身份验证提供者进行身份验证,如:

UsernamePasswordAuthenticationProvider(使用用户名和密码身份验证)UserDetailsService(使用自定义逻辑验证用户)LDAPAuthenticationProvider(通过 LDAP 身份验证)

    客户端向认证服务器发送认证请求,其中包含用户名和密码。认证服务器将凭证交给相关的身份验证提供者。身份验证提供者检查凭证的有效性并返回一个经过身份验证的 UserDetails 对象。

授权

在成功身份验证后,Spring Security 通过访问决策管理器进行授权,它包括:

AccessDecisionManager(确定是否授予访问权限)AffirmativeBased(任何一个 Role 匹配即可允许访问)ConsensusBased(所有 Role 匹配才能允许访问)

授权流程:

    认证服务器检索 UserDetails 对象中的权限。访问决策管理器比较用户权限和请求的 URL。基于访问决策,决定是否授予访问权限。

实战案例:基于角色的访问控制

在基于角色的访问控制 (RBAC) 场景中,可以执行以下步骤来使用 Spring Security 进行授权:

定义一个 UserDetailsService,该服务在给定用户名后返回具有适当角色的 UserDetails。配置 RoleHierarchyVoter 以建立角色层次结构。配置 AffirmativeBased 访问决策管理器。

配置

@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) { auth.userDetailsService(userDetailsService()); } @Override protected void configure(HttpSecurity http) { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ROLE_ADMIN") .antMatchers("/user/**").hasRole("ROLE_USER") .anyRequest().permitAll(); }}

UserDetailsService

@Servicepublic class UserDetailsServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) { User user = userRepository.findByUsername(username); return new UserDetailsAdapter(user); }}

UserDetailsAdapter

public class UserDetailsAdapter implements UserDetails { private final User user; public UserDetailsAdapter(User user) { this.user = user; } // … UserDetails implementation methods …}

以上就是Spring Security 的身份验证和授权流程是如何工作的?的详细内容,更多请关注范的资源库其它相关文章!

转载请注明:范的资源库 » SpringSecurity的身份验证和授权流程是如何工作的?

喜欢 (0)