微服务架构下的统一身份认证和授权

本文详细探讨了在微服务环境中如何实现统一身份管理(UIM),重点关注OAuth2.0和JWT在身份认证、授权和SSO中的应用,以及如何处理跨域、登出和付费授权等问题。通过实例分析,提供了基于图像识别系统的OAuth2.0最佳实践方案。
摘要由CSDN通过智能技术生成

一、预备知识

本文讨论基于微服务架构下的身份认证和用户授权的技术方案,在阅读之前,最好先熟悉并理解以下几个知识点:

  • 微服务架构相关概念:服务注册、服务发现、API 网关
  • 身份认证和用户授权:SSO、CAS、OAuth2.0、JWT

文章在涉及到上述知识内容时,会附上参考链接。此外,还有以下几个基础概念,在身份治理领域容易混淆:

  • 认证
  • 授权
  • 鉴权
  • 权限控制

建议参考 pphh 的博文《认证、授权、鉴权和权限控制》:

http://www.hyhblog.cn/2018/04/25/user_login_auth_terms

二、背景

当企业的应用系统逐渐增多后,每个系统单独管理各自的用户数据容易行成信息孤岛,分散的用户管理模式阻碍了企业应用向平台化演进。当企业的互联网业务发展到一定规模,构建统一的标准化账户管理体系将是必不可少的,因为它是企业互联网云平台的重要基础设施,能够为平台带来统一的帐号管理、身份认证、用户授权等基础能力,为企业带来诸如跨系统单点登录、第三方授权登录等基础能力,为构建开放平台和业务生态提供了必要条件。

三、需求分析

在微服务架构下,必须对企业的平台生态进行合理的业务划分,每个业务板块将自成系统,例如负责宣发的企业官网、主打文体的 B2B2C 商城、面向社区的物业服务系统等,这些系统业务比较独立,应当独立拆分。每个系统又可根据各自的业务模型进行切分,将业务模型和用户需求统筹分析后建立恰当的领域模型,形成独立的服务。

另外,企业平台的客户范围比较复杂,有 2B 的业务,也有 2C 的,还有 2G(goverment)的,因此平台级的统一身份管理必须涉及组织实体和个人实体两类,其中组织实体包括政府机关(G)、企业单位(B)、团体组织(B)等,这类似于多租户架构的概念,但又比传统多租户架构复杂。

一)统一身份管理(Unified Identity Manager)

统一身份管理(UIM)是整个平台帐号和权限管控的基础,由此构建的系统称为UIMS(Unified Identity Management System),平台下所有系统的账户管理、身份认证、用户授权、权限控制等行为都经由 UIMS 处理,提供帐号密码管理、基本资料管理、角色权限管理等功能。UIMS 基于『统一身份治理』的概念,可划分为两级账户体系、基础权限模块和基础信息模块三大模块。其中两级账户体系将账户分为组织实体帐号和个人实体账户两大类,个人实体从属于组织实体,也可以不从属任何组织实体,且个人实体可同时从属于多个组织实体;基础权限模块将各业务系统的资源权限进行统一管理和授权;基础信息模块用于描述组织实体和个人实体的基本信息,如组织实体名称、地址、法人,个人实体姓名、电话号码、性别等基础信息。UIMS 提供统一的 API 与各子系统连接。

可以看到,众多系统和众多服务都将依赖于 UIMS 。本文仅涉及 UIMS 下的两级账户体系和基础权限模块这两个模块,据此可以独立出账户管理服务和权限管理服务,也可以合并成一个账户权限管理服务。其中账户管理服务包括业务系统实体、组织实体和个人实体管理、权限管理服务包含认证、授权和鉴权三个部分。

关于统一身份管理系统的介绍,请参考 https://mtide.net/平台级SaaS架构的基础-统一身份管理系统.html

二)软件即服务(SaaS)

企业提供对外的 IT 服务,有两种部署模式:一是私有云部署,二是公有化服务。公有云服务即 SaaS,提供系统级的应用服务,包括企业服务如企业邮箱、办公 OA、人力资源系统等,个人服务如个人邮箱、云笔记、云网盘等。平台级的 SaaS 应用架构,实际上可以理解为多租户架构的升级版,加大了统一身份治理的难度。而基于 UIMS 系统的两级账户体系,可以很容易做到这一点。值得注意的是,有些系统仅提供个人账户服务,有些系统仅提供组织账户服务,有的则两者都提供,必须处理好个人实体和组织实体之间的关系。

关于 SaaS 的介绍,请参考 http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html

三)组织实体(Orginization Entity)

在 UIMS 中,组织机构应当是一种实体,与之对应的另一种实体是个人实体。注意实体(Entity)不是账户(Account),因此要设计一种用于组织实体登入受控系统的方法,这里有两种可选方案:一是增加组织实体账户,组织实体自身拥有账户,可直接进行认证登录;二是将从属于组织实体的个人账户作为组织实体的登入凭证。无论何种方法,在认证和授权时,都应当向 UIMS 提供统一的标准的账户凭证,凭证的规格由 UIMS 定义,因此,组织实体的认证授权与个人实体的认证授权并无二致。

四)单点登录(SSO)

企业平台涉及众多子系统,为简化各子系统的用户管理,提升用户体验,因此实现 SSO 是统一身份认证的重要目标:一次登录,全部访问。对于企业内部应用来说,SSO 是必须的选项,例如企业 OA、HR、CRM 等内部系统;对于外部应用来说,SSO 是可选项,具体哪个应用应当加入 SSO 系统,由该业务系统决定,例如外部商城、物业系统等对外服务系统。无论何种应用是否采用 SSO,UIMS 在技术上应当具备 SSO 的能力。

关于SSO的介绍,请参考 https://www.cnblogs.com/EzrealLiu/p/5559255.html

五)授权登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值