Spring Security(8) oauth2协议介绍
oath2协议基本介绍开放授权(Open Authorization,OAuth)是一种资源提供商用于授权第三方应用代表资源所有者获 取有限访问权限的授权机制。由于在整个授权过程中,第三方应用都无须触及用户的密码就可以取得 部分资源的使用权限,所以OAuth是安全开放的。 目前的版本是2.0 版本; OAuth协议:https://tools.ietf.org/html/rfc6749 比较常见的功能就是当登录一个网站的时候,可以使用qq 或微信等进行授权登录,并能够获取到qq 或微信的头像等信息。就是一种oauth的典型应用。 角色在oauth2中主要角色有 Resource Owner:资源所有者,通常指用户; Thirdparty application: 三方程序,也叫客户端 。需要请求其他系统的授权服务器的是客户端 Resource server:资源服务器 ,存储了想要获取的信息比如用户头像等 Authorization server 授权服务器,用来颁发请求令牌和校验等操作 主要的执行流程如下: (A)客户端要求用户提供授权许可。 (B)用户同意向客户端 ...
hadoop(十一)hadoop组件之Yarn-Yarn调度器和调度算法说明
yarn 调度器和调度算法hadoop 的三种调度器 FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler) 默认的调度器是容量调度器。 FIFO先进先出策略的任务调度器。 根据队列顺序进行执行的策略,如果前一个队列的任务还没执行,后一个一定不能执行。 此策略用的比较少。不适合生产环境使用。 Capacity Scheduler 容量调度器 (默认) 主要特点: 支持多个队列,每个单独的队列遵循FIFO的原则。 可以为每个队列设置最小资源保证和资源使用上限 灵活性,如果一个队列中的资源有剩余可以临时将资源借给其他的资源,但是如果队列有新的任务提交需要资源的时候,其他的队列借用的资源要立即归还 多租户 支持多用户共享集群和多应用程序同时执行 可以为同一个用户提交的资源进行限制,防止资源都偏移到同一个用户的提交的任务上 资源分配算法 有任务提交的时候。 首先选择队列,选择资源占用率低的队列。 作业的资源分配,安装提交的优先级和提交时间顺序分配 容器资源的分配,优先选择数据比较近的原则。 尽量数据和任务在同一个节点 Fair Schedul ...
hadoop(十)hadoop组件之Yarn-Yarn基本介绍和工作流程
Yarn概述yarn 是一个资源调度平台,用于给mapReduce 的job分配资源。 yarn 的组成 包含 ResourceManger NodeManager ApplicationMaster 和Container组成。 yarn工作流程 Mr 提交一个任务,任务信息包含job.split 切片信息,job.xml 任务元信息 x.jar 任务的执行jar包.将这些信息提交给yarn MR 会将引用程序所需要的资源路径返回给YarnRunner ,将运行所需要的资源提交到hdfs上 提交到yarn的ResourceManger上,被放到yarn的任务队列中,当yarn调度到任务队列中的任务后 为任务在一个NodeManger 机器上 开启一个容器 ,容器内部开启一个控制Mr任务的MrAppMaster MrAppMaster 计算出本次任务又2个切片所以向yarn 申请2个 yarnChild 也就是2个子容器,用来执行MapTask任务 MapTask 从Hdfs中获取运行的资源和数据 MapTask 任务执行完毕后,任务中有2个分片数据,MrAppMaster 向yarn ...
hadoop(九)hadoop组件之MapReduce-MapReduce程序开发
MapReduce 程序开发MapReduce的各个组件需要进行定制开发才能满足业务的需求。 序列化hadoop 中的序列化是为了数据能够持久化和网络传输的便携性。 因为java的序列化会覆盖很多额外的信息所以 hadoop 有自己的一套序列化机制。 hadoop 序列化特点 紧凑 高效利用存储空间 快速 读写数据速度快 可扩展 随着通信协议的升级而升级 互操作:能支持不同语言写的客户端和服务端进行交互 WritableWritable 接口是hadoop中的一个序列化接口,可以发现基本数据类型都实现了此接口,以可以实现数据的序列化。 此接口中有2个方法一个是序列化一个是反序列化 void write(DataOutput out) throws IOException; void readFields(DataInput in) throws IOException; 如果交给hadoop的输出类型是自定义类型,那么我们的自定义类型是一定要实现此接口,才能完成数据的传输和存储。 自定义Bean对象的序列化 实现Writable 接口并重写2个接口 。注意序列 ...
hadoop(八)hadoop组件之MapReduce-MapReduce程序入门
MapReduce 入门 WorkCount 程序编写程序打成jar包在服务器执行 引入相关的jar依赖 和配置 1234567891011121314<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.1.3</version> </depend ...
Spring Security(7) jwt整合
jwt基本介绍jwt 全称是jsonWebToken, 简单的说就是一种能够携带信息的token。在传统的web环境中,浏览器和后端通过记录在浏览器的cookie 和存储在服务端的session 来实现登录状态,而cookie session的方式在多分布式环境下可能带来session复制,跨域访问,单点登录等问题;直接使用后端生成token的方式,服务端也需要存储生成的token信息,因为token是无意义的。而使用jwt ,能够携带一些必要得信息比如用户id 和用户名称等;后端就不需要对生成的token做存储,同时jwt也有时间的有效期。能够做到请求接口无状态; 缺点: 安全性,payload是使用base64编码的,并没有加密,因此jwt中不能存储敏感数据。而session的信息是存在服务端的,相对来说更安全。 无法废弃,只能等待过期失效,或增加其他的黑名单类似的逻辑处理失效。 jwt 官网: https://jwt.io/ 格式在使用过程中是一个base64编码的字符串 1eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMj ...
Spring Security(5)授权流程分析
认证控制springsecurity 的认证过程的处理是通过过滤器进行拦截处理的,在请求前判断是否有具体的权限来做一些控制; 基本流程是通过过滤器 拿到请求信息,交给访问决策管理器(AccessDecisionManager) 判断是否有权限, 而 访问决策管理器(AccessDecisionManager) 通过投票机制判断是否有权限,对应的实现类聚合了多个 AccessDecisionVoter (访问投票器), 对于一个请求 所有的投票器可以投出自己的一票 通过 ,拒绝 或弃权,根据投票的最终结果得出是否允许访问成功; 首先先认识几个重要的组件; 访问决策管理器 (AccessDecisionManager)AccessDecisionManager 来处理关于访问的判断控制,在过滤器拦截后 会交给此管理器来判断是否有访问权限核心方法是 decide 方法; 对应的实现类管理了多个 AccessDecisionVoter (访问投票器) 由多个投票器进行投票; AbstractAccessDecisionManagerAbstractAccessDecisionManager ...
Spring Security(6)会话管理
会话管理简单总结下springsecurity 对会话的管理配置 配置配置 http.authorizeRequests().sessionManagement() 做配置的相关操作 12.and().sessionManagement(); 会话禁用1.sessionManagement().disable(); 会话过期配置 配置过期跳转url 1.invalidSessionUrl("/xx") 自定义过期策略 123456invalidSessionStrategy(new InvalidSessionStrategy() { @Override public void onInvalidSessionDetected(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ...
Spring Security(4)授权功能配置
授权基本说明授权指的是给用户某个操作的权限; 常见的权限的访问控制一般是 基于rpac (Role-Based Access Control)的 访问控制; Authentication 是springsecurity 中的非常重要的接口;能够获取登录用户的信息和授权的相关信息; 而授权的信息是通过 Collection<? extends GrantedAuthority> getAuthorities(); 此方法获取 GrantedAuthority 也只有一个返回Authority 的方法是一个字符串; 123456public interface GrantedAuthority extends Serializable { String getAuthority();} 这个字符串就是权限编码的信息;需要注意的是在springsecurity 中不管角色code 或权限code 都是从getAuthorities 方法获取。是不分区的,区分的标识只是看是否有 ROLE_ 这个前缀 比如 用户的授权信息是 [ “ROLE_USER”,”RO ...
Spring Security(3)登录认证源码分析
Spring Security在内部维护一个过滤器链,其中每个过滤器都有特定的责任; 比如: ChannelProcessingFilter,因为它可能需要重定向到不同的协议 SecurityContextPersistenceFilter,因此可以在web请求开头的SecurityContextHolder中设置SecurityContext,并且SecurityContext的任何更改都可以复制到HttpSession当web请求结束时(准备好与下一个web请求一起使用) 等等………. 登录流程解析UsernamePasswordAuthenticationFilter登录认证流程解析认证的是通过一个对应的过滤器UsernamePasswordAuthenticationFilter 此类是一个过滤器继承 AbstractAuthenticationProcessingFilter 既然是过滤器首先看 doFilter 逻辑 123456789101112131415161718192021222324252627282930313233private void doFi ...



