CN110912700A - 基于jwt的分布式系统安全认证方法 - Google Patents
基于jwt的分布式系统安全认证方法 Download PDFInfo
- Publication number
- CN110912700A CN110912700A CN201911104076.8A CN201911104076A CN110912700A CN 110912700 A CN110912700 A CN 110912700A CN 201911104076 A CN201911104076 A CN 201911104076A CN 110912700 A CN110912700 A CN 110912700A
- Authority
- CN
- China
- Prior art keywords
- token
- party
- auth
- access
- authentication service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012795 verification Methods 0.000 claims description 44
- 230000001419 dependent effect Effects 0.000 claims description 16
- 230000007246 mechanism Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 238000013461 design Methods 0.000 abstract description 7
- 238000011161 development Methods 0.000 abstract description 5
- 238000012423 maintenance Methods 0.000 abstract description 4
- 235000014510 cooky Nutrition 0.000 description 7
- 230000004044 response Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于JWT的分布式系统安全认证方法,包括步骤1:构建Auth认证服务,并提供令牌发放接口,该令牌发放接口由接入方调用;步骤2:Auth认证服务生成一对公钥和私钥,本地维护私钥,并向所有资源提供方提供公钥;步骤3:接入方向Auth认证服务请求获取令牌,Auth认证服务验证接入方后,使用私钥向接入方签发令牌;步骤4:接入方将该令牌维护在本地,在请求头中携带该令牌并向资源提供方请求访问资源;步骤5:资源提供方在本地通过公钥对令牌进行验签,验签通过后解析令牌,并向接入方提供资源。本发明统一了用户认证、服务认证的技术方案,节省开发及运维成本,适合分布式架构设计,可以面向更广泛的业务场景。
Description
技术领域
本发明涉及一种通讯技术中的身份认证方法,尤其涉及一种基于JWT的分布式系统安全认证方法,JWT即JSON WEB TOKEN,意为身份安全令牌。
背景技术
在分布式应用系统中,安全认证体系是整个应用系统的基础,一般包含2部分内容:用户认证(即系统登录状态)和服务认证(即后台服务间相互调用的安全凭证)。
针对用户认证,现有技术中常用的方案是通过Cookie+Session的方式,其中,Cookie是储存在用户本地终端上的数据,Session在网络应用中称为会话控制,Session对象存储特定用户会话所需的属性及配置信息。即在服务端生成一个随机的SessionID发放给客户端,客户端每次请求时,在Cookie中携带该SessionID提交给服务端验证,从而解决HTTP协议无状态的问题。对分布式系统而言,该方案的缺点在于后端若干服务器需要依赖于Redis或数据库等中间件进行Session共享,需要额外的硬件成本,同时需要集成诸如Spring-Session等技术框架,存在额外的应用开发成本,系统复杂度提升。同时,由于是基于Cookie的技术方案,当应用程序在不支持Cookie的客户端中使用时,该技术方案需要进行额外改造,因此扩展性较差。
针对服务认证,现有技术中常用的方案是通过Oauth2.0授权框架,使应用通过公开的或私有的设置,授权第三方应用访问特定资源,主要流程是:1、用户访问第三方平台;2、第三方平台请求授权方;3、授权方询问用户是否允许访问;4、用户授权访问;5、第三方平台获得访问授权。该方案能够很好得通过第三方平台提供有效的安全保障,但缺点在于整套体系较为复杂,访问一个资源需要5次请求,虽然开源框架能够将系统复杂性封装在依赖包内,但是资源访问过程中额外的请求势必造成性能损耗。
由于分布式系统的安全认证机制需要用户认证和服务认证两个部分组成,而现有的主流方案针对两部分内容提供的是两个完全不同的解决思路,因此在安全认证机制的统一性上很难保证,往往造成应用系统开发复杂度提升,技术架构臃肿且难以维护。
另外,现有技术的JwtToken本身定义中,对于令牌有效期的设定,存在局限性。该有效期包含在Token体内,属于签名明文的一部分,因此该有效期是不允许被后续操作修改的,这就导致了JwtToken本身无法在有效期设定范围内主动退出,因此无法被用于有状态的用户认证场景。
发明内容
本发明的目的在于提供一种基于JWT的分布式系统安全认证方法,统一了用户认证、服务认证的技术方案,节省开发及运维成本,适合分布式架构设计,可以面向更广泛的业务场景。
本发明是这样实现的:
一种基于JWT的分布式系统安全认证方法,该方法基于JWT协议,包括以下步骤:
步骤1:构建Auth认证服务,并提供令牌发放接口,该令牌发放接口由接入方调用;
步骤2:Auth认证服务生成一对公钥和私钥,本地维护私钥,并向所有资源提供方提供公钥;
步骤3:接入方向Auth认证服务请求获取令牌,Auth认证服务验证接入方后,使用私钥向接入方签发令牌;
步骤4:接入方将该令牌维护在本地,在请求头中携带该令牌并向资源提供方请求访问资源;
步骤5:资源提供方在本地通过公钥对令牌进行验签,验签通过后解析令牌,并向接入方提供资源。
所述的资源提供方本地集成了Auth依赖包,Auth依赖包维护与Auth认证服务携带的私钥相对应的公钥。
所述的步骤3包括以下分步骤:
步骤3.1:Auth认证服务验证接入方的注册信息,验证成功后使用私钥生成令牌;若验证不成功,则返回验证错误信息;
步骤3.2:Auth认证服务对令牌进行加密和签名;
步骤3.3:Auth认证服务将令牌签发给接入方。
所述的步骤5还包括以下分步骤:
步骤5.1:资源提供方通过公钥解密令牌,解析令牌中携带的认证信息;
步骤5.2:资源提供方向接入方提供资源。
所述的Auth认证服务中私钥的加密方式和资源提供方中公钥的解密方式使用相同秘钥的加密算法。
所述的接入方为用户方或服务方。
当所述的接入方为用户方时,设计一个第三方存储机制,用于限制令牌的有效期,具体步骤如下:
步骤S3.1:Auth认证服务通过配置文件定义令牌的长周期和短周期,起重,长周期信息将被声明在令牌的报文中;
步骤S3.2:Auth认证服务将生成的令牌存入第三方存储中,第三方存储维护令牌的短周期,且第三方存储维护的短周期允许被申请更改,更改包括延长和终结。
若所述的接入方为用户方时,验证第三方存储的令牌有效期,验证步骤如下:
步骤S5.1.1:资源提供方访问第三方存储,并校验收到的令牌的短周期,确认该令牌当前未过期,校验成功后执行步骤S5.1.2;若校验不成功,返回校验错误信息;
步骤S5.1.2:资源提供方校验收到的令牌的长周期,验证成功后执行步骤S5.1.3;若校验不成功,返回校验错误信息;
步骤S5.1.3:资源提供方向第三方存储请求延长该令牌的短周期的有效性,第三方存储延长该令牌短周期的有效期。
所述的长周期为令牌本身携带的有效期信息,即令牌能够被使用的最长期限。
若所述的接入方为用户方时,终结第三方存储的令牌短周期有效期,终结步骤如下:
步骤S5.2.1:接入方向Auth认证服务提出主动退出请求;
步骤S5.2.2:Auth认证服务向第三方存储请求终结该令牌短周期的有效期;
步骤S5.2.3:第三方存储强制过期该令牌的短周期。
本发明与现有技术相比,具有如下有益效果:
1、本发明单独搭建Auth认证服务进行令牌(Token)的签发,并提供Auth依赖包集成在资源提供方,实现了本地验证令牌(Token),确保了资源提供方的认证方案的统一,保证了架构性能,Auth依赖包集成方便,解耦了业务层与认证的技术实现,使得业务实现仅需遵守规范,无需了解认证细节,提高业务层实现效率。
2、本发明采用基于RSA的签名机制,并通过公钥对令牌(Token)进行本地验证,不依赖于第三方中间件或应用系统,提升了验证性能。
3、本发明将令牌(Token)与认证信息校验进行了解耦,允许应用服务进行自定义设计用户认证和服务认证的条件,认证通过后即发放令牌(Token),统一了用户认证和服务认证的技术方案,优化了认证架构。
4、本发明通过第三方存储维护令牌(Token)的短周期,令牌(Token)的短周期允许被删除和更改,实现了JwtToken主动退出的机制,可以被用于更广泛的业务场景中。
本发明统一了用户认证、服务认证的技术方案,节省开发及运维成本;在权限认证方面相较于Cookie+Session的方式,不需要额外的中间件进行Session共享,在验证部分无需进行远程调用,能够在本地内存中完成所有验证操作,其性能大大提升;相较于Oauth2.0认证框架,服务间调用的次数降低,受网络抖动的影响较少;由于在令牌中的声明部分提供了认证信息,资源提供方可以很容易地通过内嵌的声明信息获取用户信息或服务信息,而不需要访问Redis或数据库等中间件,更好得遵循了HTTP协议的无状态性,适合分布式架构设计;同时,提供了主动刷新、主动退出机制,可以面向更广泛的业务场景。
附图说明
图1是本发明基于JWT的分布式系统安全认证方法的架构图;
图2是本发明基于JWT的分布式系统安全认证方法中用户方接入资源提供方的时序图;
图3是本发明基于JWT的分布式系统安全认证方法中服务方接入资源提供方的时序图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
请参见附图1,一种基于JWT的分布式系统安全认证方法,该方法基于JWT(JSONWEB TOKEN,身份安全令牌)协议,JWT协议提供了一种用于发布令牌(Token)并对发布的签名接入令牌进行验证的方法。令牌(Token)包括header(头部)、claim(申明)和signature(签名)三部分,其中,header(请求头)简单声明了令牌的类型(即JWT)和产生签名所使用的算法;claim(申明)是整个令牌(Token)的核心,包含要发送的认证信息;signature(签名)提供针对header(头部)、claim(申明)的签名信息,目的是防止信息被他人篡改,从而保证令牌(Token)的安全性。
请参见附图2和附图3,所述的基于JWT的分布式系统安全认证方法包括:
步骤1:构建Auth认证服务,并提供令牌(Token)发放接口,该令牌(Token)发放接口由接入方调用。
步骤2:Auth认证服务生成一对公钥和私钥,本地维护私钥,并向所有资源提供方提供公钥。
公钥预先通过线下方式提供给资源提供方,资源提供方本地集成了Auth依赖包,Auth依赖包维护与Auth认证服务携带的私钥相对应的公钥,在auth依赖包中定义了资源访问路径的设计规范(URL),通过依赖包的形式,提供了开箱即用的认证框架,实现令牌(Token)的自动校验操作,即令牌(Token)有效期验证、令牌(Token)签名验证、令牌(Token)解析获取申明部分非敏感的注册信息等功能操作。
步骤3:接入方向Auth认证服务请求获取令牌(Token),Auth认证服务验证接入方后,使用私钥向接入方签发令牌(Token)。
步骤3.1:Auth认证服务验证接入方的注册信息,验证成功后使用私钥生成令牌(Token);若验证不成功,则返回验证错误信息。
步骤3.2:Auth认证服务对令牌(Token)的申明(claim)进行加密,并对令牌(Token)进行签名(signature),防止传递过程中被他人篡改。
步骤3.3:Auth认证服务将令牌(Token)签发给接入方。
请参见附图2和附图3若接入方为用户方,另外设计一个第三方存储机制,通过长周期、短周期,限制令牌(Token)的有效期,实现主动刷新、主动退出的需求,具体步骤如下:
步骤S3.1:Auth认证服务通过配置文件定义令牌(Token)的长周期和短周期,其中,长周期信息将被声明在令牌(Token)的报文中,作为签名(signature)对象的一部分存在,使长周期和短周期在令牌(Token)生成的那一刻,即无法被更改。
令牌(Token)中保存的签名(signature)、长周期和短周期等信息,将在后续令牌(Token)验证时被使用。
所述的长周期为令牌(Token)本身携带的有效期信息,即令牌(Token)能够被使用的最长期限,一但超过该期限,需要重新获取令牌(Token)。
步骤S3.2:Auth认证服务将生成的令牌(Token)存入第三方存储中,第三方存储维护令牌(Token)的短周期,且第三方存储维护的短周期允许被申请更改,更改包括延长和终结。
步骤4:接入方将该令牌(Token)维护在本地,在请求头(header)中携带该令牌(Token)并向资源提供方请求访问资源。
步骤5:资源提供方在本地通过公钥对令牌(Token)进行验签,确认令牌(Token)未被篡改,验签通过后解析令牌(Token),并向接入方提供资源。
资源提供方可完全不依赖于第三方应用或中间件,直接在本地验证令牌(Token),无需与其他分布式服务共享令牌(Token),并能够直接获取到接入方提供的非敏感信息,在性能上较传统方案更优。
所述的步骤5还包括以下分步骤:
步骤5.1:资源提供方通过公钥解密令牌(Token),解析令牌(Token)中携带的认证信息(非敏感的注册信息,即用户信息或服务信息)。
步骤5.2:资源提供方向接入方提供资源。
若所述的接入方为用户方时,在实际业务场景中,往往有随着用户操作需延长会话时间的诉求,验证(主动刷新)第三方存储的令牌(Token)有效期,验证步骤如下:
步骤S5.1.1:资源提供方访问第三方存储,并校验收到的令牌(Token)的短周期,确认该令牌(Token)当前未过期,校验成功后执行步骤S5.1.2;若校验不成功,返回校验错误信息。
步骤S5.1.2:资源提供方校验收到的令牌(Token)的长周期,验证成功后执行步骤S5.1.3;若校验不成功,返回校验错误信息,只有当长周期和短周期均满足时,才被认为认证通过,可以访问所请求的资源。
步骤S5.1.3:资源提供方向第三方存储请求延长该令牌(Token)的短周期的有效性,第三方存储延长该令牌(Token)短周期的有效期。
若所述的接入方为用户方时,在实际业务场景中,往往有随着用户操作需主动退出系统的诉求,使基于jwt的令牌(Token)可以被用于更广泛的业务场景中,终结第三方存储的令牌(Token)短周期有效期,终结(主动退出)步骤如下:
步骤S5.2.1:接入方主动向Auth认证服务提出退出请求。
步骤S5.2.2:Auth认证服务向第三方存储请求终结该令牌(Token)短周期的有效期。
步骤S5.2.3:第三方存储强制过期该令牌(Token)的短周期。
所述的Auth认证服务中私钥的加密方式和资源提供方中公钥的解密方式使用相同秘钥的加密算法,优选的,Auth认证服务中私钥的加密方式和资源提供方中公钥的解密方式可采用RSA非对称加密方式。
所述的接入方包括用户方和服务方。
实施例1:
所述的用户方将令牌(Token)维护在Cookie、localStorage、sessionStorage等本地存储介质中,保证了方案的扩展性。
所述的Auth认证服务对用户方的验证方法是:通过单点登录系统(SSO)等方式验证用户方的认证条件,认证条件一般包括用户名及密码是否正确等。
请参见附图2,用户方接入资源提供方时,接入时序如下:
步骤1:构建Auth认证服务,并提供令牌(Token)发放接口,该令牌(Token)发放接口由用户方调用。
步骤2:Auth认证服务生成一对公钥和私钥,本地维护私钥,并向所有资源提供方提供公钥。公钥预先通过线下方式提供给资源提供方,资源提供方集成了Auth依赖包,Auth依赖包维护与Auth认证服务携带的私钥相对应的公钥,在auth依赖包中定义了资源访问路径的设计规范(URL),通过依赖包的形式,提供了开箱即用的认证框架,实现令牌(Token)的自动校验操作,即令牌(Token)有效期验证、令牌(Token)签名验证、令牌(Token)解析获取申明部分非敏感的注册信息等功能操作。
步骤3:用户方向Auth认证服务请求获取令牌(Token),Auth认证服务验证用户方后,使用私钥向用户方签发令牌(Token),并对令牌(Token)的申明(claim)进行RSA加密,对令牌(Token)进行签名(signature),防止传递过程中被他人篡改。
步骤3.1:Auth认证服务注册用户方信息,并提供注册信息(用户名及密码)给用户方,用于用户方申请令牌(Token)。
步骤3.2:用户方将Auth认证服务提供的注册信息(用户名及密码)维护在本地。
步骤3.3:用户方通过本地的注册信息向Auth认证服务请求获取令牌(Token)。
步骤3.4:Auth认证服务验证注册信息,验证通过后向用户方生成令牌(Token);若验证不通过,则返回http 401响应。
步骤3.5:Auth认证服务通过配置文件定义令牌(Token)的长周期和短周期,并声明在令牌(Token)的报文中,作为签名(signature)对象的一部分存在,使长周期和短周期在令牌(Token)生成的那一刻,即无法被更改。
步骤3.6:Auth认证服务验证对令牌(Token)的申明(claim)进行加密,并对令牌(Token)进行签名(signature),防止传递过程中被他人篡改。
令牌(Token)中保存的签名(signature)、长周期和短周期等信息,将在后续令牌(Token)验证时被使用。所述的长周期为令牌(Token)本身携带的有效期信息,即令牌(Token)最长能够被使用的期限,一但超过该期限,需要重新获取令牌(Token)。
步骤3.7:Auth认证服务将生成的令牌(Token)存入第三方存储中,第三方存储维护令牌(Token)的短周期,且短周期允许被更改。
步骤3.8:Auth认证服务将令牌(Token)签发给接入方。
步骤4:用户方将该令牌(Token)维护在本地,在请求头(header)中携带该令牌(Token)并向资源提供方请求访问资源。
步骤5:资源提供方在本地通过公钥对令牌(Token)进行验签,确认令牌(Token)未被篡改,验签通过后解析令牌(Token),并向用户方提供资源。
步骤5.1:资源提供方访问第三方存储,并校验收到的令牌(Token)的短周期,确认该令牌(Token)当前未过期,校验成功后执行步骤5.2;若校验不成功,返回http 401响应。
步骤5.2:资源提供方校验收到的令牌(Token)的长周期,验证成功后执行步骤5.3;若校验不成功,返回http 401响应。
步骤5.3:资源提供方通过公钥采用RSA算法解密令牌(Token),解析令牌(Token)中携带的认证信息(非敏感的注册信息)。
步骤5.3:资源提供方向第三方存储请求延长该令牌(Token)的短周期有效性,第三方存储延长该令牌(Token)的有效期。
步骤5.4:资源提供方向用户方提供资源。
步骤5.5:用户方向Auth认证服务提出主动退出请求。
步骤5.6:Auth认证服务请求第三方存储删除该令牌(Token)。
步骤5.7:第三方存储强制过期该令牌(Token)的短周期。
实施例2:
所述的服务方将令牌(Token)维护在Redis、数据库、内存等存储介质中。
所述的Auth认证服务对服务方的认证条件一般包括服务代码及口令是否一致等。
请参见附图3,服务方接入资源提供方时,接入时序如下:
步骤1:构建Auth认证服务,并提供令牌(Token)发放接口,该令牌(Token)发放接口由服务方调用。
步骤2:Auth认证服务生成一对公钥和私钥,本地维护私钥,并向所有资源提供方提供公钥。公钥预先通过线下方式提供给资源提供方,资源提供方集成了Auth依赖包,Auth依赖包维护与Auth认证服务携带的私钥相对应的公钥,在auth依赖包中定义了资源访问路径的设计规范(URL),通过依赖包的形式,通过依赖包的形式,提供了开箱即用的认证框架,实现令牌(Token)的自动校验操作,即令牌(Token)有效期验证、令牌(Token)签名验证、令牌(Token)解析获取申明部分非敏感的注册信息等功能操作。
步骤3:服务方向Auth认证服务请求获取令牌(Token),Auth认证服务验证服务方后,使用私钥向服务方签发令牌(Token),并对令牌(Token)的申明(claim)进行RSA加密,对令牌(Token)进行签名(signature),防止传递过程中被他人篡改。
步骤3.1:Auth认证服务注册服务方信息,并提供注册信息(即服务代码serviceCode、口令serviceSecret)给服务方,用于服务方申请令牌(Token)。
步骤3.2:服务方将Auth认证服务提供的注册信息(即服务代码serviceCode、口令serviceSecret)维护在本地。
步骤3.3:服务方通过本地的注册信息向Auth认证服务请求获取令牌(Token)。
步骤3.4:Auth认证服务验证注册信息,验证通过后向服务方签发令牌(Token);若验证不通过,则返回http 401响应。
步骤4:服务方将该令牌(Token)维护在本地,在请求头(header)中携带该令牌(Token)并向资源提供方请求访问资源。
步骤5:资源提供方在本地通过公钥对令牌(Token)进行RSA解密,解析令牌(Token)中携带的认证信息(非敏感的注册信息),确认令牌(Token)未被篡改,认证通过并向服务方提供资源;若认证失败,则返回http 401响应。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,因此,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于JWT的分布式系统安全认证方法,该方法基于JWT协议;其特征是:包括以下步骤:
步骤1:构建Auth认证服务,并提供令牌发放接口,该令牌发放接口由接入方调用;
步骤2:Auth认证服务生成一对公钥和私钥,本地维护私钥,并向所有资源提供方提供公钥;
步骤3:接入方向Auth认证服务请求获取令牌,Auth认证服务验证接入方后,使用私钥向接入方签发令牌;
步骤4:接入方将该令牌维护在本地,在请求头中携带该令牌并向资源提供方请求访问资源;
步骤5:资源提供方在本地通过公钥对令牌进行验签,验签通过后解析令牌,并向接入方提供资源。
2.根据权利要求1所述的基于JWT的分布式系统安全认证方法,其特征是:所述的资源提供方本地集成了Auth依赖包,Auth依赖包维护与Auth认证服务携带的私钥相对应的公钥。
3.根据权利要求1所述的基于JWT的分布式系统安全认证方法,其特征是:所述的步骤3包括以下分步骤:
步骤3.1:Auth认证服务验证接入方的注册信息,验证成功后使用私钥生成令牌;若验证不成功,则返回验证错误信息;
步骤3.2:Auth认证服务对令牌进行加密和签名;
步骤3.3:Auth认证服务将令牌签发给接入方。
4.根据权利要求1所述的基于JWT的分布式系统安全认证方法,其特征是:所述的步骤5还包括以下分步骤:
步骤5.1:资源提供方通过公钥解密令牌,解析令牌中携带的认证信息;
步骤5.2:资源提供方向接入方提供资源。
5.根据权利要求1所述的基于JWT的分布式系统安全认证方法,其特征是:所述的Auth认证服务中私钥的加密方式和资源提供方中公钥的解密方式使用相同秘钥的加密算法。
6.根据权利要求1所述的基于JWT的分布式系统安全认证方法,其特征是:所述的接入方为用户方或服务方。
7.根据权利要求6所述的基于JWT的分布式系统安全认证方法,其特征是:当所述的接入方为用户方时,设计一个第三方存储机制,用于限制令牌的有效期,具体步骤如下:
步骤S3.1:Auth认证服务通过配置文件定义令牌的长周期和短周期,其中,长周期信息将被声明在令牌的报文中;
步骤S3.2:Auth认证服务将生成的令牌存入第三方存储中,第三方存储维护令牌的短周期,且第三方存储维护的短周期允许被申请更改,更改包括延长和终结。
8.根据权利要求6所述的基于JWT的分布式系统安全认证方法,其特征是:若所述的接入方为用户方时,验证第三方存储的令牌有效期,验证步骤如下:
步骤S5.1.1:资源提供方访问第三方存储,并校验收到的令牌的短周期,确认该令牌当前未过期,校验成功后执行步骤S5.1.2;若校验不成功,返回校验错误信息;
步骤S5.1.2:资源提供方校验收到的令牌的长周期,验证成功后执行步骤S5.1.3;若校验不成功,返回校验错误信息;
步骤S5.1.3:资源提供方向第三方存储请求延长该令牌的短周期的有效性,第三方存储延长该令牌短周期的有效期。
9.根据权利要求7或8所述的基于JWT的分布式系统安全认证方法,其特征是:所述的长周期为令牌本身携带的有效期信息,即令牌能够被使用的最长期限。
10.根据权利要求6所述的基于JWT的分布式系统安全认证方法,其特征是:若所述的接入方为用户方且接入方主动退出时,终结第三方存储的令牌短周期有效期,终结步骤如下:
步骤S5.2.1:接入方向Auth认证服务提出主动退出请求;
步骤S5.2.2:Auth认证服务向第三方存储请求终结该令牌短周期的有效期;
步骤S5.2.3:第三方存储强制过期该令牌的短周期。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911104076.8A CN110912700A (zh) | 2019-11-13 | 2019-11-13 | 基于jwt的分布式系统安全认证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911104076.8A CN110912700A (zh) | 2019-11-13 | 2019-11-13 | 基于jwt的分布式系统安全认证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110912700A true CN110912700A (zh) | 2020-03-24 |
Family
ID=69817254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911104076.8A Pending CN110912700A (zh) | 2019-11-13 | 2019-11-13 | 基于jwt的分布式系统安全认证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110912700A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111970231A (zh) * | 2020-06-29 | 2020-11-20 | 福建天泉教育科技有限公司 | 令牌接口降级的方法、存储介质 |
CN112417511A (zh) * | 2020-12-15 | 2021-02-26 | 重庆忽米网络科技有限公司 | 基于Handle标识解析数据权限控制的方法 |
CN112671538A (zh) * | 2021-03-16 | 2021-04-16 | 北京翼辉信息技术有限公司 | 密钥更新方法、装置、系统、存储介质及计算设备 |
CN114826757A (zh) * | 2022-05-11 | 2022-07-29 | 中国农业银行股份有限公司 | 一种身份认证方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018092446A (ja) * | 2016-12-05 | 2018-06-14 | キヤノン株式会社 | 認証認可システム及び情報処理装置と認証認可方法とプログラム |
CN109379192A (zh) * | 2018-09-21 | 2019-02-22 | 广州小鹏汽车科技有限公司 | 一种登录验证处理方法、系统及装置 |
WO2019079928A1 (zh) * | 2017-10-23 | 2019-05-02 | 华为技术有限公司 | 一种访问令牌管理方法、终端和服务器 |
CN110225050A (zh) * | 2019-06-20 | 2019-09-10 | 四川长虹电器股份有限公司 | Jwt令牌的管理方法 |
-
2019
- 2019-11-13 CN CN201911104076.8A patent/CN110912700A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018092446A (ja) * | 2016-12-05 | 2018-06-14 | キヤノン株式会社 | 認証認可システム及び情報処理装置と認証認可方法とプログラム |
WO2019079928A1 (zh) * | 2017-10-23 | 2019-05-02 | 华为技术有限公司 | 一种访问令牌管理方法、终端和服务器 |
CN109379192A (zh) * | 2018-09-21 | 2019-02-22 | 广州小鹏汽车科技有限公司 | 一种登录验证处理方法、系统及装置 |
CN110225050A (zh) * | 2019-06-20 | 2019-09-10 | 四川长虹电器股份有限公司 | Jwt令牌的管理方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111970231A (zh) * | 2020-06-29 | 2020-11-20 | 福建天泉教育科技有限公司 | 令牌接口降级的方法、存储介质 |
CN111970231B (zh) * | 2020-06-29 | 2022-06-07 | 福建天泉教育科技有限公司 | 令牌接口降级的方法、存储介质 |
CN112417511A (zh) * | 2020-12-15 | 2021-02-26 | 重庆忽米网络科技有限公司 | 基于Handle标识解析数据权限控制的方法 |
CN112417511B (zh) * | 2020-12-15 | 2022-02-22 | 重庆忽米网络科技有限公司 | 基于Handle标识解析数据权限控制的方法 |
CN112671538A (zh) * | 2021-03-16 | 2021-04-16 | 北京翼辉信息技术有限公司 | 密钥更新方法、装置、系统、存储介质及计算设备 |
CN112671538B (zh) * | 2021-03-16 | 2021-06-22 | 北京翼辉信息技术有限公司 | 密钥更新方法、装置、系统、存储介质及计算设备 |
CN114826757A (zh) * | 2022-05-11 | 2022-07-29 | 中国农业银行股份有限公司 | 一种身份认证方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sciancalepore et al. | OAuth-IoT: An access control framework for the Internet of Things based on open standards | |
CN110912700A (zh) | 基于jwt的分布式系统安全认证方法 | |
US11676133B2 (en) | Method and system for mobile cryptocurrency wallet connectivity | |
US8555361B2 (en) | Dynamic cryptographic subscriber-device identity binding for subscriber mobility | |
CN106534175B (zh) | 基于OAuth协议的开放平台授权认证系统及方法 | |
US6993652B2 (en) | Method and system for providing client privacy when requesting content from a public server | |
US7562221B2 (en) | Authentication method and apparatus utilizing proof-of-authentication module | |
CN105554004B (zh) | 一种混合云计算环境中容器服务的认证系统和方法 | |
US8799639B2 (en) | Method and apparatus for converting authentication-tokens to facilitate interactions between applications | |
CA2475150C (en) | System and method for providing key management protocol with client verification of authorization | |
US8607045B2 (en) | Tokencode exchanges for peripheral authentication | |
US7150038B1 (en) | Facilitating single sign-on by using authenticated code to access a password store | |
CN106685973B (zh) | 记住登录信息的方法及装置、登录控制方法及装置 | |
US20200320178A1 (en) | Digital rights management authorization token pairing | |
CA2734481C (en) | Authentication server and method for granting tokens | |
CN110535851A (zh) | 一种基于oauth2协议的用户认证系统 | |
CN106295394A (zh) | 资源授权方法及系统和授权服务器及工作方法 | |
US20030063750A1 (en) | Unique on-line provisioning of user terminals allowing user authentication | |
US20080134311A1 (en) | Authentication delegation based on re-verification of cryptographic evidence | |
JP2005521279A (ja) | セキュア・サービス・アクセス提供システム及び方法 | |
CN113612605A (zh) | 使用对称密码技术增强mqtt协议身份认证方法、系统和设备 | |
US20220417028A1 (en) | Methods, Systems, and Devices for Server Control of Client Authorization Proof of Possession | |
US11811739B2 (en) | Web encryption for web messages and application programming interfaces | |
Togan et al. | A smart-phone based privacy-preserving security framework for IoT devices | |
US20240137221A1 (en) | Implementation of one-touch login service |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200324 |