APP下载

一种基于OAuth2.0的微服务电力系统授权方案

2019-09-25吉书强

数字技术与应用 2019年6期
关键词:鉴权令牌校验

吉书强

摘要:為解决传统单体系统信息孤岛问题,电力系统逐步向微服务架构转型。针对基于微服务的电力系统中高安全性、高扩展性、高可靠性和低侵入性的要求,设计了一种基于OAuth2.0的授权方案,方案引入双重校验机制,同时对客户端和用户进行授权鉴权,满足电力系统应用需求。文中对该授权方案进行了详细的分析和阐述。

关键词:微服务;电力系统;OAuth2.0;授权;鉴权

中图分类号:TP393.09 文献标识码:A 文章编号:1007-9416(2019)06-0103-03

0 引言

目前电力系统大多仍采用单体应用模式,随着各种系统数量的增加及单体应用规模的扩展,单体应用的问题也逐渐暴露,如:应用复杂、维护升级和扩展新功能困难、相同业务需求因业务管理条块分割、管理边界重叠交叉、功能重复建设、信息不能共享形成信息孤岛。随着智能电网和计算机技术、网络技术和通讯技术的快速发展,全球能源互联网建设工作的不断推进,电力企业业务应用系统和平台建设逐步向规模化、多功能化、高效率和高性能的方向发展。

微服务[1]是一些协同工作的小而自治的服务,具有高内聚和高自治性。微服务根据业务的边界确定服务的边界。服务之间通过网络调用通信,加强服务之间的隔离,避免紧耦合。微服务架构在应对电力信息系统高实时性、高可靠性、高伸缩性及高扩展性的要求具有很大优势,能够解决传统电力系统信息孤岛问题。

云安全联盟(Cloud Security Alliance)发布的《云安全指南V3.0》[2]中指出云安全中的身份认证问题时信息系统的焦点问题之一。基于微服务架构的电力系统具有服务实例数量多、类型复杂、业务逻辑复杂、数据量庞大、安全性要求高和接入客户端多等特点。如何有效控制不同客户端及不同用户的权限是一种挑战。服务接入授权系统后,不能降低服务吞吐量,不能阻塞业务调度,更不能改变业务逻辑,对于已有的服务,在不改动服务架构的前提下,如何快速接入权限系统也是需要解决的问题。因此,设计一种能够将业务服务脱离权限校验细节且独立、高可用、高安全性及高扩展性的授权方案是非常必要的。

本文通过对OAuth2.0协议的详细研究,提出了一种基于OAuth2.0协议的授权方案,能够对接入的客户端和用户实现双重校验,降低基于微服务的电力系统集成授权功能的复杂度。

1 OAuth2.0协议

1.1 OAuth2.0协议

OAuth2.0是一种开放的协议,为桌面程序或者Web应用提供了一种简单的,标准的方式去访问受保护的资源。OAuth 认证授权具有简单、安全、开放的特点。OAuth 2.0 关注客户端开发者的简易性,同时为 Web 应用,桌面应用和App提供专门的认证流程。OAuth2.0协议授权流程图如图1所示。

OAuth 2.0协议主要有4种执行角色(资源拥有者用户、授权服务器、客户端、资源服务器)定义了四种授权模式:

1.1.1 授权码模式(Authorization Code)

授权码模式(Authorization Code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端后台服务器与授权服务器进行互动。授权码模式下用户登录授权后,授权服务器颁发授权码,客户端利用授权码换取令牌(Access Token)进行访问。

1.1.2 密码模式(Resource Owner Password Credentials)

密码模式中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向权限系统申请授权。这种模式只适用于用户对客户端高度信任的情况下。

1.1.3 隐藏模式(Implicit)

隐藏模式跳过授权码步骤直接向客户端颁发令牌,这种方式适用于令牌会话期有效的场景。

1.1.4 客户端凭证(Client Credentials)

只针对客户端进行验证,而不对用户验证,多个用户可能共享同一个令牌。

1.2 授权流程优化

在微服务应用场景下,已有不少开发者对协议进行了优化[3-5],但是对客户端权限控制几乎没有。由于接入客户端数量多,且电力系统应用的安全性要求高,仅仅对客户端或用户进行授权及鉴权都不合适,应该要同时对客户端及用户进行鉴权,以提高系统的安全性。为了解决以上问题,本文基于OAuth2.0协议结合JWT等技术,提出一种授权方案以提高电力系统安全性。方案将授权系统服务化,同时对客户端及用户鉴权,并降低对业务服务的侵入性,增强系统扩展性,进而增强电力系统的安全性与开放性。

2 授权方案的设计

基于微服务的电力系统架构图如图2所示,系统统一通过Api网关提供服务接口,请求到达Api网关后转发到授权服务器,进行统一的认证、授权和鉴权。业务系统不进行权限验证,专注于业务处理。

客户端接入授权系统前,需要在管理系统中提出申请并注册Redirect_Uri(重定向地址),管理员审核通过后为客户端分配App_ ID和App_Key,同时为客户端分配可调配资源(Resources),有效期等信息。申请通过后客户端可以接入授权系统,授权方案处理流程如下:

(1)用户首次通过第三方客户端发起资源请求时,客户端先利用管理员分配的App_ ID和App_Key向授权服务器请求授权,授权服务器通过App_ID和App_Key验证客户端有效性,验证成功后颁发客户端令牌Client_Token,Client_Token具有时效性,验证不成功驳回客户端请求。

(2)客户端获取Client_Token后发起授权请求,申请用户进行授权,请求包括Client_ Token、Response_Type(授权类型)、State(授权服务器直接返回)、Scope(授权范围)和Redirect_Uri,授权服务器验证Client_Token及Redirect_Uri通过后,将用户导向认证登录页面,用户输入用户名密码后进行登录并对客户端授权,授权服务器将用户导向客户端的重定向地址Redirect URI,同时返回Authorization Code(授权码),授权码时效性很短并且只能使用一次。

(3)客户端使用Client_Token、Authorization Code访问授权服务器授权端点换取访问令牌,授权服务器对Client_Token和Authorization Code校验通过后销毁授权码并颁发具有有效期(Expires)的AccessToken(访问令牌)给客户端。

(4)客户端携带Client_Token和AccessToken访问资源服务器申请资源,客户端需要同时提供Client_Token和AccessToken。

方案在授权流程中引入对客户端权限的授权,并对客户端的可申请资源进行限制,加强对客户端的安全控制增强系统安全性,改进后的授权请求顺序图如图3所示。

Api网关作为系统统一出入口,当请求到达时,Api网关首先验证当前请求是否攜带Client_Token,如果未携带Client_Token直接驳回请求,验证通过后,Api网关判断客户端请求资源是否是公开资源,如果是公开资源直接转发给资源服务器处理。请求保护资源时,Api网关进一步检测当前请求是否携带Access_Token,检测通过后,Api网关将Client_Token、Access_Token和请求发送给授权服务器进行鉴权处理。验证未通过直接驳回请求。

授权服务器接收到请求后,首先根据Client_Token解析客户端信息获取客户端可调用资源,检验当前请求资源是否在客户端可调配资源范围内,如果不在可调配资源范围内则检验不通过驳回请求。检验通过后授权服务器根据AccessToken获取当前用户角色及权限信息,校验用户权限与当前请求资源的权限是否匹配,匹配则校验通过,权限校验通过后,Api网关将请求转发给目标资源服务进行响应,如果校验未通过,驳回当前请求。权限校验流程如图4所示。

3 结语

本文基于微服务电力系统应用场景,针对电力系统高安全性要求,在OAuth2.0协议的基础上提出一种基于OAuth2.0的授权方案,对授权及鉴权流程进行改进引入双重权限校验机制,对客户端及用户同时进行授权鉴权,并对授权鉴权流程进行了详细设计和介绍。方案可扩展性强,可靠性高,对业务服务屏蔽授权、鉴权细节,侵入性小。

参考文献

[1] 辛园园,钮俊,谢志军,张开乐,毛昕怡.微服务体系结构实现框架综述[J].计算机工程与应用,2018,54(19):10-17.

[2] Cloud Security Alliance.The Treacherous Twelve.[EB/OL].(2016-04-02)[2016-03-15].http://www.doit.com.cn/p/240905.html.

[3] 魏成坤,刘向东,石兆军.基于OAuth2.0的认证授权技术研究[J].信息网络安全,2016(9):6-11.

[4] 吴德,应毅,毛道鹤.基于OAuth2.0的认证授权方案设计与优化[J].软件,2018,39(10):10-13.

[5] 欧海文,付永亮,于芋,胡馨月.一种改进的OAuth授权机制有效性分析[J].计算机应用与软件,2017,34(12):196-201.

OAuth2.0 Based Authorization Scheme in Microservice Electric System

JI Shu-qiang

(Nanjing Huadun Electric Power Information Security Assessment Co.,Ltd, Nanjing Jiangsu  211106)

Abstract:To solve the problem of isolated information in traditional single system, Electric System are transitioning to micro-service architecture. In order to satisfy the requirements of high security, high scalability, high reliability and low invasion in electric system based on micro-service, We proposed an authorization scheme based on OAuth2.0. In which a double verification mechanism is introduced to authorize and authenticate the client and user at the same time. In this paper we analyzed and described the authorization scheme in detail.

Key words:Micro Service; Electric System; OAuth2.0; Authorize; Authenticate

猜你喜欢

鉴权令牌校验
称金块
基于路由和QoS令牌桶的集中式限速网关
动态令牌分配的TCSN多级令牌桶流量监管算法
炉温均匀性校验在铸锻企业的应用
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
锅炉安全阀在线校验不确定度评定
基于小型核心网的LTE鉴权的一种新实现
电信增值业务运营中的认证鉴权控制方案研究
令牌在智能小区访客系统的应用