`
liyixing1
  • 浏览: 961467 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

security 安全核心部分

阅读更多
核心部分,可以说就是在权限那一快。

FilterSecurityInterceptor
普通的拦截器
MethodSecurityInterceptor
针对方法级的拦截器
AspectJSecurityInterceptor
等等,几个拦截器




这几个实现的代码中,可以看出来都是通过其父类AbstractSecurityInterceptor
beforeInvocation方法来完成实际的安全控制。
这些实现类只是根据自己的实现,来决定要对哪些资源,或者哪些方法进行控制。

protected InterceptorStatusToken beforeInvocation(Object object) {
        Assert.notNull(object, "Object was null");
        final boolean debug = logger.isDebugEnabled();

        if (!getSecureObjectClass().isAssignableFrom(object.getClass())) {
            throw new IllegalArgumentException("Security invocation attempted for object "
                    + object.getClass().getName()
                    + " but AbstractSecurityInterceptor only configured to support secure objects of type: "
                    + getSecureObjectClass());
        }

        Collection<ConfigAttribute> attributes = this.obtainSecurityMetadataSource().getAttributes(object);

        if (attributes == null) {
            if (rejectPublicInvocations) {
                throw new IllegalArgumentException("Secure object invocation " + object +
                        " was denied as public invocations are not allowed via this interceptor. "
                                + "This indicates a configuration error because the "
                                + "rejectPublicInvocations property is set to 'true'");
            }

            if (debug) {
                logger.debug("Public object - authentication not attempted");
            }

            publishEvent(new PublicInvocationEvent(object));

            return null; // no further work post-invocation
        }

        if (debug) {
            logger.debug("Secure object: " + object + "; Attributes: " + attributes);
        }

        if (SecurityContextHolder.getContext().getAuthentication() == null) {
            credentialsNotFound(messages.getMessage("AbstractSecurityInterceptor.authenticationNotFound",
                    "An Authentication object was not found in the SecurityContext"), object, attributes);
        }

        Authentication authenticated = authenticateIfRequired();

        // Attempt authorization
        try {
            this.accessDecisionManager.decide(authenticated, object, attributes);
        }
        catch (AccessDeniedException accessDeniedException) {
            publishEvent(new AuthorizationFailureEvent(object, attributes, authenticated,
                    accessDeniedException));

            throw accessDeniedException;
        }

        if (debug) {
            logger.debug("Authorization successful");
        }

        publishEvent(new AuthorizedEvent(object, attributes, authenticated));

        // Attempt to run as a different user
        Authentication runAs = this.runAsManager.buildRunAs(authenticated, object, attributes);

        if (runAs == null) {
            if (debug) {
                logger.debug("RunAsManager did not change Authentication object");
            }

            // no further work post-invocation
            return new InterceptorStatusToken(authenticated, false, attributes, object);
        } else {
            if (debug) {
                logger.debug("Switching to RunAs Authentication: " + runAs);
            }

            SecurityContextHolder.getContext().setAuthentication(runAs);

            // need to revert to token.Authenticated post-invocation
            return new InterceptorStatusToken(authenticated, true, attributes, object);
        }
    }
  • 大小: 25.9 KB
分享到:
评论

相关推荐

    SpringSecurity 安全权限管理手册 CHM版

    本手册详细介绍了SpringSecurity的配置、使用和核心概念,帮助开发者深入理解如何实现安全权限管理。 SpringSecurity的核心特性包括身份验证(Authentication)和授权(Authorization)。身份验证是确认用户的身份...

    jdk1.8 安全包 security

    Java安全包是Java开发工具集(JDK)中的一个重要组成部分,它主要负责提供一套机制来保护Java应用程序和Java虚拟机(JVM)免受恶意代码的攻击。在JDK 1.8版本中,安全包尤其关键,因为它包含了用于安全管理、加密、...

    WS-Security 安全

    本文将全面解析WS-Security的核心概念、与传统安全机制的差异、以及其实现和应用。 ### WS-Security概述 WS-Security是由OASIS(The Organization for the Advancement of Structured Information Standards)在...

    Spring-Security安全权限管理手册(有源码).rar

    6. **源码分析**:"Spring-Security安全权限管理手册.pdf"可能包含了对Spring Security框架的深入解析,包括其架构设计、核心类的使用方法以及最佳实践等。而"springsecurity-sample.rar"则可能是包含示例代码的...

    Spring Security 安全权限管理手册(最新)

    总之,《Spring Security安全权限管理手册》为初学者提供了一个全面了解Spring Security的平台,通过掌握其核心概念、架构原理和实践应用,开发者可以有效地在Java企业级应用中实施安全性和访问控制,保障系统的安全...

    Spring-Security安全权限管理手册+源码

    `Spring-Security安全权限管理手册.doc` 提供了详细的教程和指南,可以帮助理解和应用这些知识。 **总结** Spring Security 是一个强大而灵活的安全框架,能够帮助开发者构建安全的应用程序。它提供了认证和授权的...

    局域网交换机安全LAN Switch Security

    交换机是网络设备的核心,连接着局域网中的所有计算机和服务器,因此,确保交换机的安全是维护整个网络稳定运行的关键。交换机的安全措施通常包括防止未授权访问、数据包嗅探、MAC地址泛洪攻击、ARP欺骗、VLAN跳跃...

    Spring Security 安全权限管理手册

    2. **spring-security-core**:核心模块,包含基本的安全功能实现。 3. **spring-core**:Spring 框架的核心库,提供了 IoC 和依赖注入等功能。 4. **spring-context**:提供应用程序上下文的高级服务,如事件传播、...

    spring security3.0所需要的最精简的jar包

    Spring Security 是一...总之,Spring Security 3.0提供了一套完整的安全解决方案,其核心组件包括了认证、授权、Web安全和对象级别的权限控制。理解和掌握这些jar包的功能,能够帮助开发者有效地构建安全的应用程序。

    spring-security所需要的jar包,

    1. **spring-security-core-2.0.5.RELEASE.jar**:这是Spring Security的核心库,包含了所有基本的安全处理类和接口。这个版本的发布解决了2.0.4版本中的已知问题,并可能包含一些性能优化和新功能。它包括了访问...

    SpringSecurity安全权限管理手册

    这些依赖包括`spring-security-core`、`spring-security-acl`、`spring-security-taglibs`等,它们涵盖了Spring Security的核心功能、访问控制列表(ACL)以及用于JSP页面的安全标签库。此外,还需要Spring框架的...

    spring security 完整项目实例

    此外,Spring Security提供了过滤器链,这是处理请求的关键部分。如AnonymousAuthenticationFilter负责匿名用户的处理,UsernamePasswordAuthenticationFilter处理基于表单的登录,而RememberMeAuthenticationFilter...

    Spring Security安全权限管理手册

    ### Spring Security安全权限管理手册 #### 一、为何选择Spring Security? 在众多权限管理框架中,Spring Security脱颖而出,成为许多开发者的首选。本章节将详细解释选择Spring Security的理由及其背后的技术...

    spring security 官方文档

    Spring Security 是一个强大的安全框架,用于为Java应用提供全面的安全管理解决方案。它是Spring生态系统的组成部分,专注于身份验证、授权和访问控制。Spring Security的核心特性包括: 1. **身份验证...

    OpenStack 云安全参考指导 security-guide

    OpenStack云安全参考指导(OpenStack Security Guide)是一本为用户提供保护OpenStack云平台安全最佳实践和概念性信息的手册。该文档详细阐述了多种安全措施和配置建议,涵盖从基础系统文档的建立到身份认证、API...

    springsecurity学习笔记

    以上只是Spring Security学习过程中的一部分要点,实际上,这个框架非常深奥,包含了许多高级特性,如频道安全、密码存储、国际化的错误消息等。在学习时,建议结合实际项目实践,这样能更好地理解和掌握其工作原理...

    springsecurity所有jar包

    2. **spring-security-core**:这是Spring Security的基础模块,提供了安全核心服务,如安全性上下文、访问决策管理器、权限评估器等。它实现了基于角色的访问控制(RBAC)模型,处理用户、权限、角色等核心概念。 ...

    spring security3 中文版本

    自此之后,Spring Security 成为了 Spring 生态系统中的一个重要组成部分,不断迭代更新,以适应不断变化的安全需求和技术发展。 ##### 1.3 发行版本号 Spring Security 3.0.1 是在 Spring Security 3.0 的基础上...

    Spring_Security_官方文档

    这些组件构成了Spring Security安全体系的基石,负责处理用户的身份验证、加载用户详细信息以及密码的存储和校验。 #### 安全过滤器链 Spring Security的安全过滤器链是其架构中的一个重要组成部分,它决定了请求...

    Spring+Security+安全权限管理手册

    最后,实战部分将指导你如何在实际项目中应用Spring Security,包括创建安全的RESTful API、保护前后端分离的应用、处理权限细粒度控制等。同时,手册还会涵盖一些常见的问题和解决方案,帮助开发者解决在实施过程中...

Global site tag (gtag.js) - Google Analytics