《大数据技术及应用》课件 单元6.springboot安全控制_第1页
《大数据技术及应用》课件 单元6.springboot安全控制_第2页
《大数据技术及应用》课件 单元6.springboot安全控制_第3页
《大数据技术及应用》课件 单元6.springboot安全控制_第4页
《大数据技术及应用》课件 单元6.springboot安全控制_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元6SpringBoot安全控制学习目标01掌握在SpringBoot项目中使用SpringSecurity的基本方法02运用Token实现权限认证03运用SSO实现单点登录认证04运用JWT集成实现对信息加密任务6.1实现管理员与教职工角色认证学习目标01理解Token的基本概念和工作原理Token是服务端生成并返回给客户端的请求操作通行证。用户首次登录后,服务器生成Token并返回给客户端,作为后续请求数据的通行证。在Token有效期内,客户端使用Token访问服务器,无需再次验证用户名和密码。掌握基于Token的认证流程从请求中获取Token信息。解析Token有效期并判断其是否仍在有效期内。Token过期时要求用户重新登录,更新Token信息。使用结束后从Redis中删除用户Token令牌。了解Token的存储和删除利用Redis等缓存数据库存储Token,便于读取和更新。用户注销或Token过期时,从Redis中删除Token令牌,确保系统安全。培养运用Token实现权限认证的技能理解SSO的基本概念和工作原理SSO(SingleSignOn)是一种用户只需一次登录,即可访问多个关联系统的功能。主要流程包括:获取ticket令牌、从令牌获取用户名、判断用户名是否为error、判断用户名是否存在、判断用户对象是否存在、生成Token并创建cookie。培养运用SSO实现单点登录认证的技能03用户在一个系统登录成功后,该系统生成并返回唯一的Ticket令牌给客户端。01掌握SSO认证的实现方法02各系统共享一个统一的Ticket令牌。培养运用SSO实现单点登录认证的技能客户端在访问其他系统时,将Ticket令牌携带在请求中。其他系统验证Ticket令牌的有效性,通过则允许访问。了解SSO认证的优势和挑战培养运用SSO实现单点登录认证的技能培养运用SSO实现单点登录认证的技能优势提供统一、便捷的登录方式,保护用户隐私和安全。挑战需要系统间的协调、令牌的唯一性和安全性,以及用户隐私和数据安全问题。理解JWT基本概念和工作原理01JWT是包含头、有效载荷和签名的开放标准,用于跨域身份认证。头包含元数据,有效载荷传递具体数据,签名确保数据完整性和安全性。掌握JWT生成和验证流程02生成JWT需创建头、有效载荷,并用指定算法签名后拼接。验证时,服务器解析并验证签名。通过则允许访问资源。了解JWT的优势和挑战03JWT优势在于跨域身份认证和数据加密安全校验。但需考虑有效期、存储和传输安全等挑战。培养运用JWT集成实现对信息加密的技能知识准备02SpringSecurity简介要点三强大的认证管理SpringSecurity提供了多种认证方式,包括基于表单的登录、基于HTTPBasic的登录、基于LDAP的登录等。同时,它还支持多种用户信息存储方式,包括从数据库、LDAP服务器等获取用户信息。0102精细的授权管理SpringSecurity提供了灵活的授权管理机制,可以通过角色、权限等方式对用户进行授权。同时,它还支持面向方面的权限控制,可以对不同的请求进行不同的权限控制。完善的安全特性SpringSecurity还提供了其他安全特性,如CSRF防护、HTTP请求头校验等,可以保护应用程序免受攻击和滥用。03SpringSecurity的功能与SpringMVC的集成SpringSecurity可以与SpringMVC框架无缝集成,通过注解和配置的方式,轻松实现安全认证和授权管理。与SpringBoot的集成SpringBoot是一个快速构建Spring应用程序的框架,SpringSecurity可以与SpringBoot完美结合,提供全面的安全保护。与SpringCloud的集成SpringCloud是Spring家族中用于构建微服务的框架,SpringSecurity可以与SpringCloud集成,实现微服务之间的安全通信和身份认证。010203SpringSecurity与Spring框架的集成HTTPSecurity简介目的:配置Web应用中的授权策略,确定哪些请求需要何种权限才能访问。mvcMatchers方法:指定需授权的Controller方法。例如,`.mvcMatchers("GET","/hello")`将匹配所有到`/hello`的GET请求。权限设置:在指定URL或方法后,可调用`permitAll`允许所有用户访问,或`authenticated`只允许已认证的用户访问。antMatchers方法:通过此方法,可指定需授权的URL模式。例如,`.antMatchers("/admin/")`将匹配所有以`/admin/`开头的URL。HTTPSecurity简介authorizeRequests()功能配置基于表单的登录方式。loginPage方法用于指定登录页面的URL。例如,.loginPage("/login")将登录页面设置为/login。usernameParameter和passwordParameter方法用于指定用户名和密码的参数名。默认情况下,用户名参数名为username,密码参数名为password。登录方式在配置formLogin后,用户需通过提交表单的方式登录系统。HTTPSecurity简介formLogin()功能配置基于HTTPBasic的认证方式。HTTPBasic认证一种简单的认证方式,通过在请求头中发送用户名和密码进行认证。realmName方法指定领域名,出现在WWW-Authenticate响应头中。用户登录配置httpBasic后,用户需提供用户名和密码登录系统。HTTPSecurity简介httpBasic()Logout()用于配置和实现用户注销登录的功能。注销登录功能通过`logoutUrl`方法,可以设定用户注销后跳转的URL地址。例如,`.logoutUrl("/logout")`会将注销后的跳转地址设为"/logout"。指定注销URL使用`deleteCookies`方法,可以设定在注销过程中需要删除的Cookie。例如,`.deleteCookies("JSESSIONID")`会在用户注销时删除名为"JSESSIONID"的Cookie。删除指定Cookie在正确配置了Logout功能后,用户可以通过访问之前设定的注销URL来执行注销操作。访问注销URL进行注销HTTPSecurity简介Logout()开启Session管理:通过`sessionManagement`方法。开启SessionFixation保护:使用`sessionFixationProtection`方法。SpringSecurity管理:配置后,SpringSecurity将管理应用中的Session并采取安全措施保护用户信息。SessionFixation保护:防止攻击者利用SessionFixation攻击窃取用户信息的安全机制。用途:配置Session管理策略。HTTPSecurity简介sessionManagerment()HTTPSecurity简介01配置“记住我”功能:`rememberMe()`函数用于配置网站的“记住我”功能,使用户在下次访问时无需重新登录。02指定Cookie名称:通过`rememberMeCookieName()`方法,可以自定义“记住我”功能的Cookie名称,如`.rememberMeCookieName("remember-me")`将设置Cookie名称为"remember-me"。03设置Cookie的HTTPOnly属性:`rememberMeCookieHttpOnly`属性用于指定Cookie是否仅用于HTTP请求,不允许通过JavaScript访问,增强安全性。04用户登录时选择“记住我”:在用户登录时,可以提供“记住我”选项,选择后系统将自动记录用户信息,实现下次自动登录。rememberMe()01使用`Csrf()`方法配置CSRF防护。02CSRF攻击手段简介,可能窃取用户信息或执行恶意操作。03通过`csrfTokenRepository`方法指定CSRF令牌存储策略,如存储在HttpOnlyCookie中。04可以通过`disabled`方法禁用CSRF防护,但会降低系统安全性,不推荐使用。HTTPSecurity简介Csrf()用户请求控制相关的主要方法01用于匹配MVC风格的请求路径模式。在SpringSecurity中,可以使用Ant风格或MVC风格的路径模式来匹配请求。功能描述02该方法接受一个字符串参数,表示要匹配的请求路径模式。例如,`mvcMatchers("/admin/")`将匹配所有以"/admin/"开头的请求路径。参数说明03mvcMatchers还可以与and方法一起使用,以构建更复杂的请求路径模式。例如,mvcMatchers("/admin/").and().mvcMatchers("/user/")将匹配所有以"/admin/"或"/user/"开头的请求路径。与and方法联合使用04在使用时,需要关注路径模式的精确性和可维护性。过于具体的路径模式可能导致不必要的请求路径被匹配。建议尽可能使用相对通用的路径模式。注意事项mvcMatchers(Stringpatterns)主要作用组织多个路径模式的匹配关系,通过链式调用,将多个路径模式组合成完整的请求路径模式集合。功能描述and()方法是SpringSecurity中用于连接多个请求路径模式的方法,接受mvcMatchers或antMatchers作为参数,返回新的连接对象,用于继续添加路径模式或认证配置。返回值与用法and()方法返回连接对象,需进行链式调用,避免直接赋值给非链式调用的对象,以确保表达式的完整性。and()方法定义anyRequest是SpringSecurity中用于匹配所有请求的方法,无参数,返回一个特殊匹配器对象,表示匹配所有请求路径。全局认证策略常用于配置全局的认证策略,例如对所有请求进行身份认证或授权处理,可以与认证或授权配置结合使用。使用策略虽然可以匹配所有请求,但应根据具体业务需求确定是否使用。对于特定请求路径的认证或授权处理,建议使用更精确的匹配方法,如`mvcMatchers`或`antMatchers`。anyRequest()access方法是SpringSecurity中用于配置访问控制的方法,接受ACL表达式作为参数。access方法可与认证配置结合,实现基于用户角色的访问控制,如access("hasRole('ADMIN')")。ACL表达式支持复杂的权限控制需求,如使用通配符(*)表示任意角色或权限,或使用逗号分隔多个角色或权限。access(Stringattribute)方法定义hasAnyRole是SpringSecurity中用于匹配具有任意指定角色的用户的方法。它接受一个由逗号分隔的角色列表字符串作为参数。应用场景该方法常与认证配置结合,用于实现基于用户角色的访问控制。例如,`hasAnyRole("ADMIN,USER")`允许ADMIN或USER角色的用户访问资源。使用注意事项虽然`hasAnyRole`简化了角色匹配,但具体使用需根据业务需求。若只需匹配特定角色,建议使用更精确的`hasRole`方法。hasAnyRole(Stringroles)任务实施03SpringBoot中使用SpringSecurity的基本流程在pom.xml文件中添加spring-boot-starter-security依赖在perties或application.yml文件中配置spring.security的相关属性,例如用户名、密码等。添加SpringSecurity依赖010203创建一个继承WebSecurityConfigurerAdapter的配置类,该类用于配置SpringSecurity的相关参数。在该类中重写configure方法,用于配置认证逻辑、授权策略等。可以通过@EnableWebSecurity注解启用SpringSecurity。创建SecurityConfig配置类可以使用http.formLogin()方法配置基于表单的登录方式,通过http.logout()方法配置注销登录的方式。在SecurityConfig配置类中,通过http.authorizeRequests().antMatchers("/login").permitAll()方法配置访问控制,允许所有用户访问登录页面。通过http.authorizeRequests().anyRequest().authenticated()方法配置其他请求的访问控制,要求用户登录后才能访问。配置认证逻辑基于Token的认证流程简述

从请求中获取Token信息客户端在发起请求时,需要在请求头或请求参数中携带Token信息。在服务器端,我们可以从请求头或请求参数中提取Token信息。提取出的Token信息可能是一个字符串,我们需要将其解析为可读的格式,例如JSON或XML。根据用户身份信息,我们可以在服务器端的用户库中查找该用户的具体信息,例如用户名、用户角色等。如果找到了用户信息,我们就可以根据用户角色和其他信息,判断该用户是否有权访问请求的资源。在解析Token后,我们可以获得Token中携带的用户身份信息,例如用户的唯一标识(如UUID)或用户名等。从Token中获取用户身份信息123Token过期后无效,需拒绝请求并返回错误信息。验证Token是否过期被篡改的Token同样无效,需拒绝请求并返回错误信息。检查Token是否被篡改若Token有效且未过期,根据用户身份信息执行相应的权限认证操作。执行权限认证操作验证Token有效性在验证完令牌的有效性之后,需要在Redis中更新过期的token信息。将现在的系统时间更新到用户对象loginUser中,然后通过将系统现在的时间,加上令牌有效时间,计算出该对象的令牌下一次失效的时间。更新过期的token信息用户使用结束后,需要从Redis中删除当前用户的token令牌。从token令牌中获取用户的userKey信息,并调用删除方法将其删除。删除当前用户的token令牌基于SSO的认证SSO认证的流程为:(1)通过@RequestParam注解,在用户get请求上获取ticket令牌(2)通过TokenUtils.roam_check(ticket)方法,从令牌上获取用户的用户名(3)判断用户的用户名是否为error,如果用户名为error则提示用户重新登录(4)判读用户的用户名是否存在,如果用户名存在,根据用户名查找用户对象(5)判断查找的用户对象是否存在,如果用户为空则创建一个新的用户对象(6)根据查询到的用户对象的用户名生成Token,并创建cookie,将Token验证放到cookie中基于SSO的认证认证失败处理使用AuthenticationFailureHandler接口:在认证失败时,利用SpringSecurity的AuthenticationFailureHandler接口来处理。该接口提供的onAuthenticationFailure方法可用于打印访问失败的提示信息。配置SecurityConfig:在SecurityConfig类中,使用authenticationManagerBuilder对象的.and()方法,通过.authenticationFailureHandler()方法,将自定义的AuthenticationFailureHandler实现类注入到SpringSecurity中。自定义AuthenticationFailureHandler:在自定义的AuthenticationFailureHandler实现类中,获取用户访问的页面地址和认证失败原因,然后打印相应的提示信息。打印访问失败提示信息自定义认证失败处理类在onAuthenticationFailure方法中,我们可以获取到用户想要访问的页面地址和认证失败的原因,然后打印出相应的提示信息。我们可以创建一个自定义的认证失败处理类,该类需要实现AuthenticationFailureHandler接口,并重写onAuthenticationFailure方法。我们需要在SecurityConfig配置类中,通过authenticationManagerBuilder对象的.and()方法,调用.authenticationFailureHandler()方法,将自定义的AuthenticationFailureHandler实现类注入到SpringSecurity中。在SecurityConfig配置类中,我们可以通过Lambda表达式来处理认证失败的情况。具体实现方式是在authenticationManagerBuilder对象的.and()方法中,调用.authenticationFailureHandler((request,response,exception)->{...})方法,然后在Lambda表达式中处理认证失败的情况。在Lambda表达式中,我们可以获取到用户想要访问的页面地址和认证失败的原因,然后打印出相应的提示信息。使用Lambda表达式处理认证失败注销登录配置从token令牌中获取userKey在注销时,首先从token令牌解析出userKey。此key是用户登录时由系统生成并存于Redis的。通过userKey获取用户对象利用获取的userKey,调用登录用户的方法从Redis中查找并返回相应的用户对象。检查用户对象是否存在在获取用户对象后,检查其是否存在。若不存在,则表示用户已注销,返回相关提示信息;若存在,则继续注销操作。获取已登录用户的认证信息调用tokenService的delLoginUser方法在用户对象获取后,调用此方法来传递当前用户的token信息,以便从Redis中删除相应的令牌。检查Redis中的token信息在调用delLoginUser方法后,检查Redis中是否仍存在该用户的token信息。若不存在,则返回成功删除的提示;若存在,则继续排查原因。检查tokenService和RedisCache的工作状态在Redis中存在用户的token信息时,检查这两个组件是否正常工作。若有故障,及时排查并修复;若均正常,进一步分析原因并采取相应措施。从Redis中删除当前用户的token信息JWT集成概述JWT定义JWT,即JSONWebToken,是一种用于Web应用之间安全传输信息的开放标准,常用于身份验证和授权。JW

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论