springsecurity的认证鉴权,acl,oauth2.0

16 篇文章 0 订阅
4 篇文章 0 订阅

主要就是一些拦截器链,@PreAuthorize,@PreFilter,@PostAuthorize和@PostFilter

认证AuthenticationManager

基于列表的ProviderManager实现,每个处理器都有机会处理验证成功或失败

AuthenticationProvider获取适配的处理器

鉴权AccessDecisionManager

基于投票的 AccessDecisionManager 实现,投票决策管理器AccessDecisionVoter

基本实现:

RoleVoter投票ROLE_开头的权限

AuthenticatedVoter用于区分匿名、完全身份验证和记住我身份验证的用户

RoleHierarchyVoter层级角色,允许您配置哪些角色admin(或权限)应该包括其他角色user(或权限)

AfterInvocationManager

调用后处理,修改安全对象调用实际返回的对象的方法

acl(域对象)访问控制列表

可以使用PermissionEvaluator接口 基于表达式的访问控制 hasPermission(target, permission)

boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission);第一种用于访问被控制的域对象已经加载的情况。

boolean hasPermission(Authentication authentication, Serializable targetId, String targetType, Object permission);第二个版本用于未加载对象但其标识符已知的情况。

旨在表达式系统和 Spring Security 的 ACL 系统之间架起桥梁,允许您根据抽象权限指定对域对象的授权约束。它对 ACL 模块没有显式依赖,因此您可以根据需要将其替换为替代实现。

在spring-security-acl.jar里有建表语句,可以开箱即用AclService,AclEntryVoter等类

oauth2协议资源服务器和资源授权服务器

有两个项目,spring-security-oauth2和spring-security项目下的oauth2模块,目前spring把功能都迁移到spring-security了,推荐使用spring-security。

spring-security的oauth2.0 客户端支持是通过oauth2Client() DSL(配置,fromLogin那里)方法实现的。资源服务器支持是通过 oauth2ResourceServer() DSL实现的,并且提供了一个OAuth2AuthorizedClientService开箱即用的类。授权服务器目前security还没有集成oauth2.0的,所以只能先用oauth2.0的,使用@EnableAuthorizationServer注解

提供了@RegisteredOAuth2AuthorizedClient注解,将授权的客户端存储在自己的OAuth2AuthorizedClientRepository。

ClientRegistrationRepository来表示客户端,可以通过 Spring Security DSL 提供。或者,这些也可以通过 Spring Boot 进行配置。

可以定义多个

    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public SecurityFilterChain systemSecurityFilterChain(HttpSecurity http) throws Exception {
        OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http);
        http.getConfigurer(OAuth2AuthorizationServerConfigurer.class)
                .authorizationEndpoint(config->{
                    OAuth2AuthorizationEndpointConfigurer configurer = (OAuth2AuthorizationEndpointConfigurer) config;

        });
        return http.build();
    }

    @Bean
    public SecurityFilterChain clientSecurityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .requestMatchers(requestMatchers).permitAll()
                .anyRequest().denyAll().and()
                .formLogin().and();
        return http.build();
    }

根据matches请求走不同的过滤器链,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security是一个功能强大的安全框架,用于在Java应用程序中实现身份验证和授权。JWT(JSON Web Token)是一种轻量级的身份验证和授权机制,其中包含了验证用户身份的加密信息。OAuth 2.0是一种开放标准的授权协议,它允许用户授权第三方应用程序访问受保护的资源。 Spring Security可以与JWT和OAuth 2.0结合使用,以提供更强大的身份验证和授权功能。使用JWT作为身份验证机制,可以在用户登录成功后生成一个JWT令牌,并将其加入到HTTP请求的Header中。服务端可以使用JWT中的信息,如用户名和权限,对请求进行验证,确保用户的身份是有效的。而OAuth 2.0允许用户通过授权服务器颁发的token来访问受保护的资源,Spring Security可以集成OAuth 2.0来实现授权验证的逻辑。 通过使用Spring Security结合JWT和OAuth 2.0,可以轻松实现可伸缩、安全的身份验证和授权机制。开发人员可以使用Spring Security提供的各种功能,如用户认证、角色授权和访问控制,来保护应用程序中的敏感操作和数据。此外,使用JWT和OAuth 2.0,可以实现无状态的API身份验证和授权,提高系统的可扩展性和性能。 总之,Spring Security与JWT和OAuth 2.0的结合为应用程序提供了安全、可靠的身份验证和授权机制。开发人员可以根据具体的需求配置和使用这些功能,以保护应用程序的安全和数据的机密性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值