当前位置:首页 > 公众号精选 > 架构师社区
[导读]当企业应用系统逐渐增多后,每个系统单独管理各自的用户数据容易形成信息孤岛,分散的用户管理模式阻碍了企业应用向平台化演进。

作者:mars

链接:https://juejin.cn/post/6906149001520037902

-     前言     -

当企业应用系统逐渐增多后,每个系统单独管理各自的用户数据容易形成信息孤岛,分散的用户管理模式阻碍了企业应用向平台化演进。

企业的互联网业务发展到一定规模,构建统一的标准化账户管理体系将是必不可少的,因为它是企业互联网云平台的重要基础设施,能够为平台带来统一的帐号管理、身份认证、用户授权等基础能力,为企业带来诸如跨系统单点登录、第三方授权登录等基础能力,为构建开放平台和业务生态提供必要条件。

- 名词定义 -

  • Third-party application:第三方应用程序,本文中又称"客户端"(client)。

  • HTTP service:HTTP服务提供商,本文中简称"服务提供商"。

  • Resource Owner:资源所有者,本文中又称"用户"(user),即登录用户。

  • User Agent:用户代理,本文中就是指浏览器。

  • Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。

  • Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

- 研发背景 -

单体应用体系下,应用是一个整体,一般针对所有的请求都会进行权限校验。请求一般会通过一个权限的拦截器进行权限的校验,在登录时将用户信息缓存到 session 中,后续访问则从缓存中获取用户信息。

随着 Restful API、微服务的兴起,基于 Token 的认证现在已经越来越普遍。Token 和 Session ID 不同,并非只是一个 key。Token 一般会包含用户的相关信息,通过验证 Token 就可以完成身份校验。

基于 Token 认证的优势如下:

  • 服务端无状态:Token 机制在服务端不需要存储 session 信息,因为 Token 自身包含了所有用户的相关信息。

  • 性能较好,因为在验证 Token 时不用再去访问数据库或者远程服务进行权限校验,自然可以提升不少性能。

  • 支持移动设备,支持跨程序调用,Cookie 是不允许垮域访问的,而 Token 则不存在这个问题。

- 研发目标 -

通过标准安全认证流程,异构系统或跨服务间能够灵活地实现指定功能部件或服务的集成、统一的安全认证。

基于 Token 认证的一个典型流程如下:

  1. 用户输入登录信息(或者调用 Token 接口,传入用户信息),发送到身份认证服务进行认证(身份认证服务可以和服务端在一起,也可以分离,看微服务拆分情况了)。

  2. 身份验证服务验证登录信息是否正确,返回接口(一般接口中会包含用户基础信息、权限范围、有效时间等信息),客户端存储接口,可以存储在 Session 或者数据库中。

  3. 客户端将 Token 放在 HTTP 请求头中,发起相关 API 调用。

  4. 被调用的微服务,验证 Token 权限。

  5. 服务端返回相关资源和数据。

1、安全认证功能点


一文揭秘微服务架构统一安全认证设计与实践!

(1)获取凭证, 第三方应用客户端使用客户端编码/安全码、资源所有者用户名/密码等证件信息从授权服务器上获取Access Token资源访问凭证。

(2)登录授权,客户端携带Access Token凭证访问服务器资源,资源服务器验证Token、第三方应用凭证信息、资源所有者User合法性,通过Token读取资源所有者身份信息(user) 加载资源所有者的权限项执行登录。

(3)访问鉴权,第三方应用客户端访问服务端资源,系统验证访问者Access Token合法性、权限信息,验证凭证(Access Token)正确,此时资源服务器就会返回资源信息。

(4)凭证续约,Access token访问凭证过期需要进行凭证续约,刷新Token凭证有效期。

2、技术选型分析

  1. 系统授权采用OAuth2开放式授权标准密码模式。

  2. Token采用JWT标准。

(1)OAuth开放授权

OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息。

主要的四种授权方式:

  • 授权码模式(authorization code)用在客户端与服务端应用之间授权码。

  • 简化模式(implicit)用在移动app或者web app(这些app是在用户的设备上的,如在手机上调起微信来进行认证授权)。不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。

  • 密码模式(resource owner password credentials)应用直接都是受信任的(都是由一家公司开发的)密码模式中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。

  • 客户端模式(client credentials)用在应用API访问客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。

(2)Json web token (JWT)

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

3、认证流程逻辑

(1)系统授权

第三方应用客户端使用客户端编码/安全码、资源所有者用户名/密码等证件信息从授权服务器上获取Access Token资源访问凭证。

一文揭秘微服务架构统一安全认证设计与实践!

系统授权颁发给客户应用Access Token:


一文揭秘微服务架构统一安全认证设计与实践!

(2)系统鉴权

客户端携带Access Token凭证访问服务器资源,资源服务器验证Token、第三方应用、资源所有者User合法性,通过Token读取资源所有者身份信息(user) 加载资源所有者的权限执行登录。

一文揭秘微服务架构统一安全认证设计与实践!

系统验证访问者Access Token合法性、权限信息,验证凭证(Access Token)正确,此时资源服务器就会返回资源信息。

(3)凭证续约

Access token访问凭证过期需要进行凭证续约,刷新Token凭证有效期。

一文揭秘微服务架构统一安全认证设计与实践!

- 接口设计 -

1. 授权凭证

获取授权凭证,校验客户端身份信息、校验资源所有者身份信息,下发Token凭证。

一文揭秘微服务架构统一安全认证设计与实践!

客户端编码/安全码需要第三方应用到系统注册审核通过后生成。

一文揭秘微服务架构统一安全认证设计与实践!

一文揭秘微服务架构统一安全认证设计与实践!

2. 授权凭证续约

获取续约授权凭证,校验客户端身份信息、校验RefreshToken凭证,下发Token凭证。

一文揭秘微服务架构统一安全认证设计与实践!

一文揭秘微服务架构统一安全认证设计与实践!

一文揭秘微服务架构统一安全认证设计与实践!


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭