续sso单点登录及日志记录

SSO单点登录系统进阶实现

核心知识点

认证服务器(sso-auth)中Token设计(UUID令牌,JWT令牌)
认证服务器(sso-auth)中Oauth2规范基本配置(认证入口-/oauth/token,为谁认证,由谁认证,认证后颁发什么令牌)
基于Postman,Http-Client工具进行认证测试?(请求方式,请求url,认证参数)
资源服务器(sso-resource)核心业务分析及认证,授权规则设计及实现(匿名,认证,鉴权/授权)
API网关工程设计及实现(所有外部请求对内部资源的访问入口)
客户端UI工程设计及实现(重点是如何传递令牌-“请求头”)
常见问题分析

Oauth2是什么?(协议,定义了完成认证和授权操作时所需要的一些对象以及这些对象应用方式)
SpringSecurity 是什么?(一个spring认证和授权框架,可以基于Oauth2协议进行认证和授权的落地实现)
JWT是什么?(是JSON WEB TOKEN这几个单词的缩写,描述的是web应用中的一种令牌格式)
JWT有几部分构成?(头:令牌类型,签名算法,负载:允许包含用户登录状态 ,签名:防止令牌被篡改)
为什么要采用JWT令牌?(可以存储用户登录状态信息,避免访问资源时从数据库查询认证信息)
基于Oauth2协议的认证服务器默认的令牌生成策略是什么?(UUID.randomUUID())
认证服务器中常见令牌相关设计中对应的存储方案有哪些?(Mysql,Redis,Jwt)
认证服务器对用户进行认证时,客户端提交了哪些关键信息?(username,password,client_id,grant_type,client_secret)
认证服务器完成认证操作后,服务端返回哪些信息?(访问令牌,刷新令牌,令牌类型,作用域,编号)
认证服务器中完成认证业务的关键对象有哪些?(Filter,AutenticationManager,UserDetailService,.)
资源服务器如何设计的认证,授权规则?(三个维度:匿名,登录,授权)
访问令牌与刷新令牌有什么不一样?(客户端是要携带访问令牌访问资源的,刷新令牌是为了再次生成访问令牌)
访问令牌,刷新令牌有有效时长吗?(刷新令牌有效时长一般要大于访问令牌有效时长)
为什么网关层面要做跨域设计?(Ajax技术不支持跨域请求,将所有服务的跨域共性提取到网关层面)
UI工程中用户端如何提交ajax请求的?(axios,底层ajax对象为XMLHttpRequest)
@EnableAuthorizationServer注解的作用是什么?(描述认证服务中的配置类,开启认证服务)
@EnableResourceServer注解的作用是什么?(描述资源服务器中的配置类,开启资源鉴权服务)
@EnableGlobalMethodSecurity注解的作用?(描述资源服务中的配置,开启访问层面的访问拦截)
@PreAuthorize注解的作用?(描述资源访问方法,定义鉴权切入点方法,例如controller中方法)

常见BUG分析
400异常,请求参数不合法(参数个数,类型,格式)。
401异常,认证失败?(提交的数据不正确,没有认证去访问资源也是401)
403异常,没有资源访问权限?(说明用户为已认证用户,但是没有资源的访问权限)
503异常,访问的资源不存在? (检查nacos中是否有你的服务)
500异常,出现这个错只能说服务端出现异常,但是什么异常还要看服务端的控制台.

SSO系统中用户行为日志的记录

核心知识点

  • 系统工程(sso-system)中用户行为日志的记录(写入到数据库,亮点是@Async)
  • 资源工程(sso-resource)中用户行为日志的获取。(亮点是AOP方式日志的获取)
  • 资源工程将用户行为日志传递给系统工程。(亮点Feign)

常见问题分析

何为用户行为日志?(用户操作系统资源时执行的具体动作)
为什么要记录用户行为日志?(第一、知道用户做了什么,第二、基于日志分析用户喜好)
System工程中如何记录用户行为日志的?(异步方式将日志写到数据库,@EnableAsync,@Async)
System工程中@Async描述的方法运行在谁提供的线程中。(SpringBoot帮我们启动的线程池)
系统工程中的用户行为日志来自哪里?(资源服务器,此服务器获取用户访问资源的一些信息)
资源服务器通过什么样的方式获取用户行为信息?(AOP)
资源服务器通过什么方式将日志传递给system工程的。(feign)
资源服务访问系统服务访问不到或者请求超时你是怎么处理?(熔断,回顾Feign章节调用)
资源服务器的切面中如何获取登录用户的?(SecurityContextHolder)
资源服务器的切面中如何获取请求对象的?(RequestContextHolder)
 

常见Bug分析

  • 400异常,请求参数不合法(参数个数,类型,格式)。
  • 401异常,认证失败?(提交的数据不正确)
  • 403异常,没有资源访问权限?(说明用户为已认证用户,但是没有资源的访问权限)
  • 404异常,你访问的资源不存在。

拓展

sso-system工程数据库以及日志级别的配置写到配置中心
sso-system工程中配置spring线程池(可以先写到bootstrap.yml中)
sso-gateway工程中添加资源访问时的限流操作。
sso-ui工程的登录页面上添加一个注册按钮,实现一个用户注册功能。
sso-ui工程的登录页面上添加微信登录功能。

 

你可能感兴趣的:(spring,maven,intellij-idea)