acl和sso都是干什么用的

172 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

通常,我们的一个后台系统离不开三部分,sso 单点登录,acl 权限管理以及用户基础服务。

sso 负责登录认证。 acl负责权限管理,权限角色菜单授权等管理操作。 用户基础服务,就是负责用户信息录入,修改,封禁等等。

sso 系统可以分为三部分:

  • 登录客户端
  • 登录前端服务,负责接口串联,相当于控制层,可以有不同的语言实现,可以有会话管理与心跳保活
  • 登录后台服务,体则提供凭证管理、身份认证、会话管理、应用接入

常见的流程为:

  1. 应用服务先检查用户是否登录,没有登录,跳转到登录页,直接对接 sso 服务
  2. 登录成功颁发 ticket,重定向到业务页面
  3. 业务页面发起请求,首先被应用服务捕获到,应用服务调用 sso 服务校验 ticket
  4. 校验通过,应用处理登录态(通常需要服务缓存一下,搞个失效时间),并响应应用请求

常见的问题是如何保活?通常需要发起保活请求,然后更新一下 ticket 为什么叫单点登录?如果应用没有本地的登录信息,可以调用 sso 服务,sso 服务会发现其实已经登录并带着应用跳回到新的应用,也就是说发现已经登录的情况不需要重新登录

acl 权限服务,常用的 rbac,即基于角色的权限控制。

acl 公认的安全原则:

  1. 最小特权原则:尽量把权限的粒度控制小
  2. 责任分离原则,角色互斥,动静职责分离
  3. 数据抽象原则,数据权限与数据模型进行抽奖

acl 的调用流程

  1. 发起请求
  2. 服务端发现资源需要有对应的权限,调用 acl 查看此用户有无权限
  3. 有权限返回成功,返回数据
  4. 无权限返回结果,要求用户申请权限