基于OAuth2.0安全认证中间件的设计与实现

2019-03-18 01:13杨旸潘俊臣
网络空间安全 2019年7期
关键词:拥有者中间件客户端

杨旸 潘俊臣

摘   要:文章研究的是微服务架构系统中的客户端中间件和登录验证模块。为了实现用户登录后,能在浏览器端实现对ePass3000GM便携式密码设备进行读写卡操作,文章在深入分析OAuth2.0协议的基础上,提出了基于OAuth2.0安全认证中间件的设计与实现。在中间件与Web服务端进行登录验证,用户登录后通过Web服务端重新定向到中间件进行读写卡操作。

关键词:OAuth2.0;中间件;授权码;访问令牌

中图分类号:TP393          文献标识码:A

Abstract: This article studies client middleware and login authentication modules in microservice architecture systems. In order to enable users to log in, the ePass3000GM portable password device can be read and written on the browser. Based on an in-depth analysis of the OAuth2.0 protocol, this paper proposes the design and implementation of a secure authentication middleware based on OAuth2.0. Login verification is performed between the middleware and the web server. After the user logs in, the user is redirected to the middleware through the web server to perform card reading and writing.

Key words: OAuth2.0; middleware; authorization code; access token

1 引言

OAuth[1](Open Authorization)是一個关于开放授权的网络标准,国内各大网站都有其应用的场景,目前的版本是2.0。OAuth2.0主要用于认证授权登录,它作为开放平台认证授权系统的标准协议而备受关注。但是,微服务架构(Microservices)的出现以及在国内外的成功应用,成为系统架构的一种新选择,很多大型Web服务等都已经从传统的单块架构迁移到微服务架构[2]。

本文在深入研究OAuth2.0的协议后,提出了基于OAuth2.0安全认证登录方案,并且实现了与客户端中间件通信,从而实现对ePass3000GM便携式密码设备的读写卡操作。本文首先对OAuth2.0协议进行了详细的介绍,然后对系统架构、授权流程、读写卡流程及关键技术展开论述,最后得出设计的结果。

2 OAuth2.0

2.1 OAuth2.0协议

在网络技术日新月异的21世纪,互联网环境下各部分之间的协作变得更为紧密,对数据整合与资源共享的要求愈发强烈,必然呈现出不同Web应用数据交互的现象。而OAuth协议正是解决了在“第三方”客户端不获取用户敏感数据(密码)的情况下,允许客户端在授权范围内获取用户受保护的基本信息(如用户名、头像等)[3]。

OAuth最初发布的版本为OAuth1.0,后又发布了OAuth1.0a。在2012年10月发布了OAuth协议的第三个版本,即OAuth2.0。OAuth2.0和之前的两个版本并不兼容,它采用了简化的签名机制[4]。利用SSL(HTTPS)传输信息,在提高安全性的同时,还简化了授权流程。OAuth2.0和此前的两个版本相对比,开发难度大大降低、交互次数有所减少、授权流程更加简单,从根本上提升了执行效率。此外,OAuth2.0协议新增了多个授权模式,为开发者提供了诸多便利。

2.2 OAuth2.0的四种执行角色

(1)Resource Owner(RO):资源拥有者,即能够允许获取受保护资源的实体。

(2)Client:表示资源拥有者对受保护资源提出访问请求的应用,本文称为“客户端中间件”或“安全认证中间件”,简称“中间件”。

(3)Authorization Server(AS):授权服务器,即服务端专门用来处理认证的服务器,用于发放访问令牌。

(4)Resource Server(RS):资源服务器,即服务端存放用户生成资源的服务器。它与认证的服务器,可以是同一台服务器,也可以是不同的服务器。

其中,服务端包括三个部分:资源拥有者、授权服务器、资源服务器,用于处理来自客户端的授权请求。

2.3 OAuth2.0运行流程

(1)客户端向资源拥有者发起授权请求。

(2)资源拥有者同意并返回授权许可。

(3)客户端携带授权许可向授权服务器申请访问令牌。

(4)授权服务器对客户端进行认证以后,确认无误,同意发放令牌。

(5)客户端使用令牌,向资源服务器申请获取资源。

(6)资源服务器对客户端发来的令牌进行确认后,同意向发放受保护资源,OAuth2.0运行流程如图1所示,

总结OAuth2.0的运行流程可分为三步:第一,获取用户授权;第二,发放访问令牌;第三,发放受保护资源。

2.4 客户端的授权模式

客户端必须先拿到授权许可(Authorization Grant),再取得访问令牌(Access Token),最终获取受保护资源。OAuth 2.0定义了四种授权方式[6]。

猜你喜欢
拥有者中间件客户端
我国自主可控中间件发展研究
虚拟专用网络访问保护机制研究
新闻客户端差异化发展策略
以实力证明 用事实说话
中移动集采:东方通中间件脱颖而出
浅析IEEE 802.1x及其客户端软件
金蝶 引领中间件2.0新时代