001-Creación de microservicios desde el centro de certificación desde cero (1)

escribe primero

Si has obtenido algo de este proyecto, recuerda seguir a Star, es un gran estímulo y apoyo para mí.

Dirección de la fuente: gitee.com/csps/mingyu…

Dirección del documento: gitee.com/csps/mingyu…

Selección de tecnología

¡ Este microservicio se utilizará Sa-Tokencomo marco de autenticación de autoridad!

  • Apache Shiro : en términos relativos, es relativamente antiguo. La autorización de inicio de sesión de terceros debe implementarse manualmente, y es problemático implementar oauth. ¡No recomendado!
  • Spring Security : es muy perfecto y hay muchos casos de implementación en Internet, pero el equipo de Spring Security anunció oficialmente que Spring Security OAuth ha finalizado el mantenimiento (el proyecto no sufrirá ninguna iteración, incluidas las correcciones de errores ). ¡Los artículos nuevos no son muy recomendables!
    • Como versión de transición de SpringBoot 3.0, SpringBoot 2.7.0 ha desactualizado una gran cantidad de clases de configuración sobre SpringSecurity.Si se usa la configuración desactualizada de la versión anterior, no se puede actualizar.
  • Servidor de autorización Spring : el principal proyecto del servidor de autorización OAuth2 en el ecosistema Spring en la actualidad debería ser la solución OAuth2 de la familia Spring durante mucho tiempo en el futuro. ¡recomendar!
    • También hay deficiencias. Hasta ahora, solo se ha iterado a 1.1.0. En la actualidad, hay relativamente pocos casos y documentos. Recomiendo un cerdo de proyecto de código abierto , que actualmente se usa Spring Authorization Server 0.4.0como un servicio de autenticación OAuth2.
    • Artículo de lectura recomendado: [Seguridad] Spring Boot integra Spring Authorization Server
  • Sa-Token : un marco ligero de autenticación de permisos de Java, con documentos chinos e iterado a 3.4.0, todavía es estable en la actualidad, ¡recomendado!

Ficha Sa

Cuando lea los documentos de Spring Security, Spring Authorization Server y luego mire los documentos de Sa-Token, tendrá una sensación realmente simple.

Los últimos documentos de desarrollo están siempre en: sa-token.cc

El documento Sa-Token hace todo lo posible para explicar las razones de diseño y los escenarios de aplicación de cada función. Si lee el documento detenidamente , aprenderá no solo Sa-Tokenel marco en sí, sino también las mejores prácticas de diseño de permisos en la mayoría de los escenarios.

Lista de funciones actuales

  • Autenticación de inicio de sesión: inicio de sesión de extremo único, inicio de sesión de múltiples terminales, inicio de sesión de exclusión mutua del mismo extremo, inicio de sesión gratuito dentro de los siete días
  • Autenticación de autoridad: autenticación de autoridad, autenticación de rol, autenticación de dos niveles de sesión
  • Sesión sesión : sesión compartida completa, sesión exclusiva de un solo extremo, sesión personalizada
  • Desconecta a alguien : desconecta a alguien de acuerdo con la identificación de la cuenta y desconecta a alguien de acuerdo con el valor del token.
  • Prohibición de cuenta : prohibición de inicio de sesión, prohibición por categoría comercial, prohibición por escala de penalización
  • Extensión de capa de persistencia : puede integrar Redis, Memcached y otro middleware de almacenamiento en caché profesional, y reiniciar los datos sin pérdida
  • Sesión distribuida ——Proporcione integración jwt y centro de datos compartido dos soluciones de sesión distribuida
  • 微服务网关鉴权 —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证
  • 单点登录 —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定
  • OAuth2.0认证 —— 轻松搭建 OAuth2.0 服务,支持openid模式
  • 二级认证 —— 在已登录的基础上再次认证,保证安全性
  • Basic认证 —— 一行代码接入 Http Basic 认证
  • 独立Redis —— 将权限缓存与业务缓存分离
  • 临时Token认证 —— 解决短时间的Token授权问题
  • 模拟他人账号 —— 实时操作任意用户状态数据
  • 临时身份切换 —— 将会话身份临时切换为其它账号
  • 前后端分离 —— APP、小程序等不支持Cookie的终端
  • 同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
  • 多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权
  • Token风格定制 —— 内置六种Token风格,还可:自定义Token生成策略、自定义Token前缀
  • 注解式鉴权 —— 优雅的将鉴权与业务代码分离
  • 路由拦截式鉴权 —— 根据路由拦截鉴权,可适配restful模式
  • 自动续签 —— 提供两种Token过期策略,灵活搭配使用,还可自动续签
  • 会话治理 —— 提供方便灵活的会话查询接口
  • 记住我模式 —— 适配[记住我]模式,重启浏览器免验证
  • 密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
  • 全局侦听器 —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
  • 开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用

单点登录与 OAuth2.0

本微服务将采用 OAuth2.0 作为权限认证解决方案!

功能点 SSO单点登录 OAuth2.0
统一认证 支持度高 支持度高
统一注销 支持度高 支持度低
多个系统会话一致性 强一致 弱一致
第三方应用授权管理 不支持 支持度高
自有系统授权管理 支持度高 支持度低
Client级的权限校验 不支持 支持度高
集成简易度 比较简单 难度中等

单点登录

举个场景,假设我们的系统被切割为 N 个部分:游戏、论坛、直播、社交…… 如果用户每访问一个模块都要登录一次,那么用户将会疯掉, 为了优化用户体验,我们急需一套机制将这 N 个系统的认证授权互通共享,让用户在一个系统登录之后,便可以畅通无阻的访问其它所有系统。

单点登录——就是为了解决这个问题而生!

简而言之,单点登录可以做到:在多个互相信任的系统中,用户只需登录一次,就可以访问所有系统。

OAuth2.0

简单来讲,OAuth2.0 的应用场景可以理解为单点登录的升级版,单点登录解决了多个系统间会话的共享,OAuth2.0 在此基础上增加了应用之间的权限控制。OAuth2.0 可以是通往 SSO 这个 “罗马” 的其中一条路,但它们本身并列于不同的场景与需求。

Basado en diferentes escenarios de uso, OAuth2.0 ha diseñado cuatro modos

  1. Código de autorización : pasos de autorización estándar OAuth2.0, el servidor envía el código al cliente y el cliente intercambia el código por un token de autorización

    imagen-20220801165430181

  2. Implícito : una opción alternativa cuando no se puede usar el modo de código de autorización, el lado del servidor usa el método de redirección de URL para enviar directamente el token a la página del lado del cliente

  3. Contraseña (Password) : el cliente intercambia directamente la contraseña de la cuenta del usuario por un token de autorización

    imagen-20220801165338556

  4. Credenciales de cliente (Credenciales de cliente) : el token en el nivel de cliente en el lado del servidor representa la autorización de recursos de la aplicación en sí

Supongo que te gusta

Origin juejin.im/post/7237037303914168357
Recomendado
Clasificación