具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
请参见图2,本实施例提供的一种认证方法包括:
S201:获取用户的HTTP请求;
S202:若HTTP请求所对应的本地会话不存在,则对用户进行身份认证;
S203:若身份认证成功,则为用户颁发认证令牌;
S204:若认证令牌有效,则为用户颁发授权令牌;
S205:根据授权令牌所对应的业务权限,响应HTTP请求。
在一些实施例中,本发明实施例的认证方法应用于5G云化网络,该方法结合Service Mesh((服务网格))思想,采用边车模式,通过提出一种5G微服务开发框架下,可以为各服务/微服务提供的统一认证,同时支持不同业务不同系统的细粒度的安全授权方案,使用边车代理来实现认证授权控制面功能,把安全边车代理集成到微服务开发框架方式,让不同服务的开发者只通过简单的资源模型配置就可以实现其复杂的权限管理,聚焦于自身业务的开发,简化服务化平台安全开发方式,为5G网络提供统一的服务化认证授权方案。
边车模式。分布式架构下云设计模式的一种,因为类似于生活中的边三轮摩托车而得名。该设计模式通过给应用程序加上一个边车的方式来拓展应用程序现有功能,比如监控,流量控制、服务发现、服务限流、服务熔断等在业务服务中不需要实现的控制面功能,可以交给”边车”,业务服务只需要关注实现业务逻辑即可。这与分布式和微服务架构完美契合,真正实现了控制和逻辑的分离和解耦。每个服务都将具有配套代理边车,服务都通过边车通信,就形成了网状服务部署结构,也就是Service Mesh(服务网格)。
在一些实施例中,认证方法还包括在环境中部署认证服务和授权服务。安全边车代理作为独立的进程部署于各微服务内且安全边车代理不影响业务微服务集成的部署,通过拦截用户的HTTP请求,解析HTTP请求中的认证授权信息,进而实现业务安全权限的控制。需要说明的是,安全边车代理作为各业务微服务底层支撑的组成部分,作为认证代理的为各业务提供透明的认证和鉴权服务。同时作为授权代理还可以为各服务提供统一的权限模型的收集服务。安全边车代理是无侵入式的,和微服务的业务处理完全解耦,适用于多语言的微服务框架,为微服务业务开发提供极大便利。
需要说明的是,安全边车代理是用户HTTP请求所对应的微服务的安全边车代理。例如,用户向微服务A请求业务资源,发出HTTP请求,微服务A的安全边车代理获取到该HTTP请求后,进行判定该HTTP请求所对应的本地会话是否存在。进行进行后续流程。
需要说明的是,步骤S202-S203中的对用户进行身份认证并颁发认证令牌可以基于认证服务来进行,认证服务主要负责用户身份合法性的校验,用户令牌的管理,颁发和检验以及用户会话生命周期的管理,用户的访问控制。
需要说明的是,步骤S204中为用户颁发授权令牌可以是由授权服务来进行,授权服务主要负责系统权限管理,可以接收各微服务的注册的权限模型,为各微服务提供精细的权限配置,同时为安全边车代理提供实际的鉴权服务。
需要说明的是,认证令牌包括用户的身份信息和微服务的身份凭证。
需要说明的是,授权令牌包括用户的身份信息。
在一些实施例中,授权令牌由JWT(JSON Web Token)构成,其中携带用户的身份信息。如果认证令牌校验无效,则不会生成授权令牌,由边车代理直接返回用户身份不合法。
在一些实施例中,若HTTP请求所对应的本地会话不存在,则对用户进行身份认证包括:
获取用户的全局身份令牌;
若所述全局身份令牌有效,则颁发所述认证令牌。
需要说明的是,当安全边车代理判定用户的HTTP请求没有本地会话存在时,也即可以理解为用户在本地没有授权令牌,不能直接响应用户的HTTP请求,需要用户经身份认证,对其颁发授权令牌后,再行判定是否响应该HTTP请求。而身份认证可以在认证服务中实现,安全边车代理判定本地会话不存在,请求跳转到认证服务进行认证身份认证。认证服务接收到用户身份认证请求后,首先会基于该用户身份认证请求获取该用户的全局身份令牌,需要说明的是,全局身份令牌是用户在微服务框架中的全局身份令牌,全局身份令牌置于cookie中作为多个服务全局的会话标记,标志着用户的身份。若全局身份令牌有效,则颁发认证令牌。
在一些实施例中,该认证令牌可以添加到跳转到认证服务的用户发送的HTTP请求URL参数中,传递给微服务。
在一些实施例中,若HTTP请求所对应的本地会话不存在,则对用户进行身份认证包括:
获取用户的全局身份令牌;
若所述全局身份令牌无效或获取不到所述全局身份令牌,则获取用户的身份凭证信息,根据身份凭证信息进行身份凭证校验;
若校验通过,则颁发全局身份令牌和认证令牌。
在一些实施例中,用户的身份凭证信息的获取方法可以是通过提供给用户一个身份认证的页面,其中包括一些需要用户提供的身份凭证信息的填写提示,其中用户身份凭证信息包括但不限于用户名、密码、身份证号、预留验证信息等,用户填写完成后,将上述用户身份信息提交给认证服务,认证服务进行身份凭证校验,若校验通过,则会生成两个令牌,一个是全局身份令牌,全局身份令牌是用户在微服务框架中的全局身份令牌,全局身份令牌置于cookie中作为多个服务全局的会话标记,标志着用户的身份;另一个是发放给微服务本身的认证令牌,认证令牌既是业务微服务的身份凭证,同时也包含用户的身份信息。在一些实施例中,认证令牌可以添加到跳转到认证服务的用户发送的HTTP请求URL参数中,传递给微服务。
在一些实施例中,若HTTP请求所对应的本地会话存在,则响应HTTP请求。
需要说明的是,当本地会话存在时,则代表授权令牌有效,可以通过本地会话直接获取到授权令牌,进而响应HTTP请求。
在一些实施例中,若身份认证成功,则获取用户的认证令牌,认证令牌包含用户的身份信息和微服务的身份凭证之后,还包括:
若认证令牌无效,则用户的身份不合法。
在一些实施例中,若认证令牌无效,也可以对该用户重新进行身份认证,重新颁发认证令牌后再次请求授权令牌。需要说明的是,为了保证系统的资源占用合理,该步骤重复次数可以设置一个重复次数上限阈值。
在一些实施例中,若认证令牌有效,则为用户颁发授权令牌的过程可以是,安全边车代理将获取到的认证令牌传输给认证服务,认证服务对该认证令牌进行认证,若该认证令牌是有效的,则认证服务向授权服务发起授权令牌的请求,授权服务根据认证服务中所包括的身份信息等颁发对应的授权令牌,认证服务将该授权令牌传回安全边车代理。
在一些实施例中,根据授权令牌所对应的业务权限,响应HTTP请求包括:
获取HTTP请求所对应的请求权限;
若授权令牌有效,则获取授权令牌所对应的授权权限;
若授权权限包括全部请求权限,则响应HTTP请求。
需要说明的是,授权权限包括全部请求权限在一些实施例中可以认为,授权权限大于或等于请求权限,例如,请求权限是读取数据A,而授权权限是读取数据A,此时,请求权限等于授权权限。又例如,请求权限是读取数据A,而授权权限是读取并删除数据A,此时,请求权限小于授权权限。又例如,请求权限是读取数据A,而授权权限是读取A、更改B、删除C,此时,请求权限小于授权权限。不论怎样,只要授权权限中包括请求权限所需要的全部权限,则响应HTTP请求。
在一些实施例中,根据授权令牌所对应的业务权限,响应HTTP请求包括:
获取HTTP请求所对应的请求权限;
若授权令牌有效,则获取授权令牌所对应的授权权限;
若授权权限包括部分请求权限,则响应请求权限与授权权限一致的部分内容。
需要说明的是,授权权限包括部分请求权限在一些实施例中可以理解为授权权限与请求权限存在一步分交叉关系,但请求权限并不是授权权限的子集,也即,授权权限并没有完全包括请求权限。例如,请求权限是读取数据A,删除数据B,而授权权限是读取并删除数据A,此时,请求权限与授权权限之间存在读取数据A的交集,则,仅响应HTTP请求中关于读取数据A的部分,其余部分不响应。
在一些实施例中,请求权限与授权权限完全不一致,此时一方面可以采取终止响应的措置,另一方面也可以提示用户重新进行身份认证,进而重新进行授权确认。
在一些实施例中,若认证令牌有效,则为用户颁发授权令牌,授权令牌包括用户的身份信息之后,还包括:
若获取不到授权令牌所对应的业务权限,则重新进行身份认证。
需要说明的是,获取不到授权令牌所对应的业务权限,可以理解为在此验证授权令牌时,授权令牌无效,由于此时用户已经具备全局令牌,因此,只需要重新请求获取认证令牌即可。
在一些实施例中,对用户进行身份认证包括:
本地服务器对用户进行身份认证;
或,
第三方认证服务器对用户进行身份认证。
需要说明的是,对用户进行身份认证既可以在本地进行,也可以借助第三方认证服务器来进行,还可以是本地服务器与第三方认证服务器之间相互协作,完成用户身份认证。
在一些实施例中,在获取用户的HTTP请求之前,认证方法还包括:
在环境中部署授权服务;
在微服务中部署权限模型,权限模型文件为业务微服务根据权限模型格式定义,权限模型格式由授权服务定义;
微服务启动时,安全边车代理解析并加载权限模型并向授权服务发送权限模型的注册请求,安全边车代理作为独立的进程部署于微服务内;
授权服务将注册请求转换为可识别的权限定义,并将权项定义发送给安全管理员;
安全管理员配置并为用户分配权限。
需要说明的是,在一些实施例中,可以由业务微服务按照授权服务定义的权限模型格式定义业务服务的权限模型,并将定义好的权限模型部署于微服务中。权限模型就是业务请求的资源和其实际业务权限的映射关系,权限模型可以理解为业务请求的资源与其实际业务权限的映射关系,权限模型可以定义为用户单个操作和资源实例的粒度,操作和资源分别以预定义的树状结构组织。权限粒度由业务微服务自己控制,理论上粒度无限细分。与现有的框架的权限粒度只会控制是否有权可以访问某个微服务,或者最多支持到某个服务接口是否可以访问,无法对服务接口中的资源实例和执行的操作进行权限的判定相比,本发明实施例所提供的这种业务权限分配的方式能够支持复杂业务的细粒度授权。
在一些实施例中,微服务启动时,安全边车代理解析并加载权限模型,然后通过REST接口发送注册请求,请求注册到授权服务,以便权限分配时候使用。当安全边车代理在解析权限模型,然后把权限模型注册到授权服务,授权服务立即就可以加载并更新当前的权限模型。权限模型注册接口是开放标准的REST(Representational State Transfer)接口,各业务服务如果在运行期增加业务,同样可以直接调用权限模型注册接口,授权服务会动态更新权限模型,达到权限模型即插即用的目的。保证老业务不间断的同时,增加新的业务。
在一些实施例中,授权服务将注册请求转换为可识别的权限定义包括:
授权服务将注册请求通过树状结构组织起来,转换为安全管理员可识别的权限定义。
可以理解,授权服务收到各安全边车代理的权限模型的注册请求后,通过树状结构组织起来,最终呈现给安全管理员可识别的权限定义。
需要说明的是,本发明实施例中的一个认证服务可以对应多个微服务,每一个微服务中都包括一个安全边车代理。本发明实施例中的一个授权服务可以对应多个微服务,每一个微服务中都包括一个安全边车代理。
在一些实施例中,安全管理员为指定用户授予不同应用的不同的业务权限,如网元001的告警查看权限。其中,当用户被授予某个业务权限时,意味着他有权访问这个请求,安全边车代理作为认证服务底层框架的组成,在服务启动时自动加载权限模型。在一些实施例中,安全管理员可以通过获取客户端授权页面,就可以展示应用服务权限模型。
在一些实施例中,若微服务没有注册权限模型,则当用户身份认证成功后,则可以直接响应HTTP请求。
在一些实施例中,响应HTTP请求包括:
安全边车代理判定授权令牌有效,且完成了授权权限与请求权限的确权,确定了需要响应内容后,将该需要响应内容请求发送给微服务中的业务处理模块,业务处理依需要响应内容请求完成资源整合后,将该需要响应内容请求所对应的响应内容经由安全边车代理返回给用户。
下面通过一个具体的实施例,进一步说明本发明实施例所提供的认证方法。
如图3所示:
S301:在环境中部署授权服务、认证服务;
S302:在微服务中部署权限模型;
S303:微服务启动时,安全边车代理解析并加载权限模型;
S304:安全边车代理向授权服务发送权限模型的注册请求;
S305:授权服务将注册请求转换为可识别的权限定义,并将权项定义发送给安全管理员;
S306:安全管理员配置并为用户分配权限;
S307:向微服务A请求业务资源,发出HTTP请求;
S308:判断HTTP请求所对应的本地会话是否存在,若存在执行S309,若不存在执行S318;
S309:请求进行用户身份认证;
S310:获取用户的全局身份令牌,全局身份令牌是否有效,若有效则执行S311,若无效或不存在则执行S312;
S311:若全局身份令牌有效,颁发认证令牌,执行S314;
S312:若全局身份令牌不存在或者无效,进行身份校验;
S313:若身份校验成功,颁发全局身份令牌和认证令牌;
S314:安全边车代理根据该用户的认证令牌向认证服务请求授权令牌;
S315:认证服务确定该认证令牌有效,向授权服务请求授权令牌;
S316:授权服务颁发授权令牌;
S317:认证服务将该授权令牌返回给安全边车代理;
S318:根据授权令牌所对应的业务权限,响应HTTP请求。
需要说明的是,在环境中部署认证服务和授权服务,安全边车代理作为独立的进程部署于在各微服务内,不影响业务微服务集成的部署,拦截HTTP请求,解析其中的认证授权信息,来完成业务安全权限的控制。同一个授权服务可能对应多个微服务。
需要说明的是,业务服务按照授权服务定义的权限模型格式定义业务服务的权限模型文件,部署于微服务中。
需要说明的是,微服务启动时,将权限模型通过REST接口注册到授权服务,以便权限分配时候使用。
在一些实施例中,用户在浏览器输入业务微服务A的某个请求URL,也即发出HTTP请求,发送请求到微服务A,被安全边车代理拦截后,会先缓存本地会话和授权令牌,进而会判定该HTTP请求是否已经有本地会话存在,本地会话代表着用户暂时持有授权令牌,如果本地会话存在,则授权令牌合法,则根据本地会话取到授权令牌,直接走步骤S318,否则如果本地会话不存在,会发送跳转到认证服务器请求身份认证的请求到浏览器也即步骤S309。
在一些实施例中,上述步骤S312-S313中对用户进行身份校验的一种具体的实现方式:获取用户的身份凭证信息,根据身份凭证信息进行身份凭证校验;若校验通过,则颁发全局身份令牌和认证令牌。
需要说明的是,若微服务A在接收用户的业务资源请求前没有进行步骤S301-S306的业务权限分配步骤,则获取到用户对应的认证令牌后,不再进行授权令牌的获取,以及授权令牌所对应权限的比对,直接对用户所发出的HTTP所请求的业务资源进行响应。
需要说明的是,用户的全局身份令牌是否存在可以通过跳转的过程中cookie中是否存在全局身份令牌来获得。
在一些实施例中,认证令牌是认证服务在传递URL叠加认证令牌。
在一些实施例中,S318,根据授权令牌所对应的业务权限,响应HTTP请求的具体事项方式可以是:
安全边车代理持有该授权令牌,同时解析业务资源请求所需要的权限,得到希望授权的操作或者资源,然后到授权服务申请用户在微服务的操作或者资源的权限。
授权服务校验授权令牌的合法性,如果合法则返回边车代理的所申请的操作和资源权限。如果授权令牌不合法,则返回用户授权失败,需要重新申请认证令牌,再拿认证令牌获取新的合法授权令牌。
安全边车代理根据返回的权限判定用户请求是否有权限访问。如果有权访问,则把请求和当前用户信息传递到微服务A的业务处理,处理完毕。
返回对用户的响应。
本发明实施例提供了一种认证方法,该方法通过获取用户的HTTP请求;若HTTP请求所对应的本地会话不存在,则对用户进行身份认证,颁发认证令牌,颁发授权令牌,根据授权令牌所对应的业务权限,响应HTTP请求,解决了现有相关技术中不能同时支持认证授权,系统集成复杂,用户体验度低的问题,达到了支持同时认证授权、支持负责业务的细粒度授权,解决系统集成的复杂性的问题,提升用户体验。
进一步地,通过本发明的认证方法的实现,可以实现支持用户自定义的细粒度权限授权控制方式,通用为资源实例和操作级别授权。
进一步地,现有的服务化认证授权没有一套标准的方式,认证授权流程的安全性也是一个比较大的门槛,同时细粒度的授权大多数框架都不足以支撑,导致大多数的授权都是各自为阵,实现复杂。而本发明提供的认证方法对使用者来说实现较为简单,基本不需要开发。
实施例二:
本实施例还提供了一种认证装置400,如图4所示,该认证装置400包括微服务模块401,认证服务模块402,授权服务模块403,微服务模块401包括安全边车代理模块4011和业务处理模块4012,其中:
安全边车代理模块4011,用于获取用户的HTTP请求;
认证服务模块402,用于若HTTP请求所对应的本地会话不存在,则对用户进行身份认证;若身份认证成功,则为用户颁发认证令牌,认证令牌包含用户的身份信息和微服务的身份凭证;
授权服务模块403,用于若认证令牌有效,则为用户颁发授权令牌,授权令牌包括用户的身份信息;
业务处理模块4012,用于根据授权令牌所对应的业务权限,响应HTTP请求。
在一些实施例中,本发明实施例的认证装置应用于5G云化网络,该装置结合Service Mesh((服务网格))思想,采用边车模式,通过提出一种5G微服务开发框架下,可以为各服务/微服务提供的统一认证,同时支持不同业务不同系统的细粒度的安全授权方案,使用边车代理来实现认证授权控制面功能,把安全边车代理集成到微服务开发框架方式,让不同服务的开发者只通过简单的资源模型配置就可以实现其复杂的权限管理,聚焦于自身业务的开发,简化服务化平台安全开发方式,为5G网络提供统一的服务化认证授权方案。
边车模式。分布式架构下云设计模式的一种,因为类似于生活中的边三轮摩托车而得名。该设计模式通过给应用程序加上一个边车的方式来拓展应用程序现有功能,比如监控,流量控制、服务发现、服务限流、服务熔断等在业务服务中不需要实现的控制面功能,可以交给”边车”,业务服务只需要关注实现业务逻辑即可。这与分布式和微服务架构完美契合,真正实现了控制和逻辑的分离和解耦。每个服务都将具有配套代理边车,服务都通过边车通信,就形成了网状服务部署结构,也就是Service Mesh(服务网格)。
在一些实施例中,认证装置还包括在环境中部署认证服务模块和授权服务模块。安全边车代理模块作为独立的进程部署于各微服务模块内且安全边车代理模块不影响业务微服务模块集成的部署,通过拦截用户的HTTP请求,解析HTTP请求中的认证授权信息,进而实现业务安全权限的控制。需要说明的是,安全边车代理模块作为各业务微服务模块底层支撑的组成部分,作为认证代理的为各业务提供透明的认证和鉴权服务。同时作为授权代理还可以为各服务提供统一的权限模型的收集服务。安全边车代理是无侵入式的,和微服务的业务处理完全解耦,适用于多语言的微服务框架,为微服务业务开发提供极大便利。
需要说明的是,本发明实施例提供的认证装置可以包括一个微服务模块,也可以包括多个微服务模块,在一些实施例中,其中每一个微服务模块内都包括一个业务处理模块和安全边车代理模块。
需要说明的是,安全边车代理是用户HTTP请求所对应的微服务的安全边车代理。例如,用户向微服务A请求业务资源,发出HTTP请求,微服务A的安全边车代理获取到该HTTP请求后,进行判定该HTTP请求所对应的本地会话是否存在。进行进行后续流程。
需要说明的是,认证服务模块对用户进行身份认证并颁发认证令牌可以基于认证服务来进行,认证服务模块主要负责用户身份合法性的校验,用户令牌的管理,颁发和检验以及用户会话生命周期的管理,用户的访问控制。
需要说明的是,为用户颁发授权令牌可以是由授权服务模块来进行,授权服务模块主要负责系统权限管理,可以接收各微服务模块的注册的权限模型,为各微服务模块提供精细的权限配置,同时为安全边车代理模块提供实际的鉴权服务。
需要说明的是,认证令牌包括用户的身份信息和微服务的身份凭证。
需要说明的是,授权令牌包括用户的身份信息。
在一些实施例中,授权令牌由JWT(JSON Web Token)构成,其中携带用户的身份信息。如果认证令牌校验无效,则不会生成授权令牌,由边车代理直接返回用户身份不合法。
在一些实施例中,认证服务模块用于,获取用户的全局身份令牌,全局身份令牌是用户在微服务框架中的全局身份令牌;若全局身份令牌有效,则颁发认证令牌。
需要说明的是,当安全边车代理模块判定用户的HTTP请求没有本地会话存在时,也即可以理解为用户在本地没有授权令牌,不能直接响应用户的HTTP请求,需要用户经身份认证,对其颁发授权令牌后,再行判定是否响应该HTTP请求。而身份认证可以在认证服务模块中实现,安全边车代理模块判定本地会话不存在,请求跳转到认证服务模块进行用户身份认证。认证服务模块接收到用户身份认证请求后,首先会基于该用户身份认证请求获取该用户的全局身份令牌,需要说明的是,全局身份令牌是用户在微服务框架中的全局身份令牌,全局身份令牌置于cookie中作为多个服务全局的会话标记,标志着用户的身份。若全局身份令牌有效,则颁发认证令牌。
在一些实施例中,该认证令牌可以添加到跳转到认证服务模块的用户发送的HTTP请求URL参数中,传递给微服务模块。
在一些实施例中,认证服务模块用于,获取用户的全局身份令牌,全局身份令牌是用户在微服务框架中的全局身份令牌;若全局身份令牌无效或获取不到全局身份令牌,则获取用户的身份凭证信息,根据身份凭证信息进行身份凭证校验;若校验通过,则颁发全局身份令牌和认证令牌。
在一些实施例中,用户的身份凭证信息的获取方法可以是通过提供给用户一个身份认证的页面,其中包括一些需要用户提供的身份凭证信息的填写提示,其中用户身份凭证信息包括但不限于用户名、密码、身份证号、预留验证信息等,用户填写完成后,将上述用户身份信息提交给认证服务模块,认证服务模块进行身份凭证校验,若校验通过,则会生成两个令牌,一个是全局身份令牌,全局身份令牌是用户在微服务框架中的全局身份令牌,全局身份令牌置于cookie中作为多个服务全局的会话标记,标志着用户的身份;另一个是发放给微服务模块本身的认证令牌,认证令牌既是业务微服务模块的身份凭证,同时也包含用户的身份信息。在一些实施例中,认证令牌可以添加到跳转到认证服务模块的用户发送的HTTP请求URL参数中,传递给微服务模块。
在一些实施例中,业务处理模块还用于,若HTTP请求所对应的本地会话存在,则响应所述HTTP请求。
需要说明的是,当本地会话存在时,则代表授权令牌有效,可以通过本地会话直接获取到授权令牌,进而响应HTTP请求。
在一些实施例中,若身份认证成功,则获取用户的认证令牌,认证令牌包含用户的身份信息和微服务的身份凭证之后,还包括:
若认证令牌无效,则用户的身份不合法。
在一些实施例中,若认证令牌无效,也可以对该用户重新进行身份认证,重新颁发认证令牌后再次请求授权令牌。需要说明的是,为了保证系统的资源占用合理,该步骤重复次数可以设置一个重复次数上限阈值。
在一些实施例中,若认证令牌有效,则为用户颁发授权令牌的过程可以是,安全边车代理模块将获取到的认证令牌传输给认证服务模块,认证服务模块对该认证令牌进行认证,若该认证令牌是有效的,则认证服务模块向授权服务模块发起授权令牌的请求,授权服务模块根据认证服务模块中所包括的身份信息等颁发对应的授权令牌,认证服务模块将该授权令牌传回安全边车代理模块。
在一些实施例中,业务处理模块用于,
获取HTTP请求所对应的请求权限;
若授权令牌有效,则获取授权令牌所对应的授权权限;
若授权权限包括全部请求权限,则响应HTTP请求。
需要说明的是,授权权限包括全部请求权限在一些实施例中可以认为,授权权限大于或等于请求权限,例如,请求权限是读取数据A,而授权权限是读取数据A,此时,请求权限等于授权权限。又例如,请求权限是读取数据A,而授权权限是读取并删除数据A,此时,请求权限小于授权权限。又例如,请求权限是读取数据A,而授权权限是读取A、更改B、删除C,此时,请求权限小于授权权限。不论怎样,只要授权权限中包括请求权限所需要的全部权限,则响应HTTP请求。
在一些实施例中,业务处理模块用于,获取HTTP请求所对应的请求权限;若授权令牌有效,则获取授权令牌所对应的授权权限;若授权权限包括部分请求权限,则响应请求权限与授权权限一致的部分内容。
需要说明的是,授权权限包括部分请求权限在一些实施例中可以理解为授权权限与请求权限存在一步分交叉关系,但请求权限并不是授权权限的子集,也即,授权权限并没有完全包括请求权限。例如,请求权限是读取数据A,删除数据B,而授权权限是读取并删除数据A,此时,请求权限与授权权限之间存在读取数据A的交集,则,仅响应HTTP请求中关于读取数据A的部分,其余部分不响应。
在一些实施例中,请求权限与授权权限完全不一致,此时一方面可以采取终止响应的措置,另一方面也可以提示用户重新进行身份认证,进而重新进行授权确认。
在一些实施例中,认证服务模块还用于:授权服务模块为用户颁发授权令牌之后,若授权令牌无效,则重新进行身份认证。
需要说明的是,由于此时用户已经具备全局令牌,因此,只需要重新请求获取认证令牌即可。
在一些实施例中,认证服务模块位于本地服务器,或,第三方认证服务器。
需要说明的是,对用户进行身份认证既可以在本地进行,也可以借助第三方认证服务器来进行,还可以是本地服务器与第三方认证服务器之间相互协作,完成用户身份认证。
在一些实施例中,如图5所示,认证装置400还包括:
部署模块404,用于在环境中部署授权服务;在微服务中部署权限模型,权限模型文件为业务微服务根据权限模型格式定义,权限模型格式由授权服务定义;
安全边车代理模块4011还用于,微服务启动时,解析并加载权限模型并向授权服务发送权限模型的注册请求,安全边车代理作为独立的进程部署于微服务内;
授权服务模块403还用于,将注册请求转换为可识别的权限定义,并将权项定义发送给安全管理员;
安全管理员405,用于配置并为用户分配权限。
需要说明的是,在一些实施例中,可以由业务微服务按照授权服务定义的权限模型格式定义业务服务的权限模型,并将定义好的权限模型部署于微服务中。权限模型就是业务请求的资源和其实际业务权限的映射关系,权限模型可以理解为业务请求的资源与其实际业务权限的映射关系,权限模型可以定义为用户单个操作和资源实例的粒度,操作和资源分别以预定义的树状结构组织。权限粒度由业务微服务自己控制,理论上粒度无限细分。与现有的框架的权限粒度只会控制是否有权可以访问某个微服务,或者最多支持到某个服务接口是否可以访问,无法对服务接口中的资源实例和执行的操作进行权限的判定相比,本发明实施例所提供的这种业务权限分配的方式能够支持复杂业务的细粒度授权。
在一些实施例中,微服务模块启动时,安全边车代理模块解析并加载权限模型,然后通过REST接口发送注册请求,请求注册到授权服务模块,以便权限分配时候使用。当安全边车代理模块在解析权限模型,然后把权限模型注册到授权服务模块,授权服务模块立即就可以加载并更新当前的权限模型。权限模型注册接口是开放标准的REST(Representational State Transfer)接口,各业务服务如果在运行期增加业务,同样可以直接调用权限模型注册接口,授权服务模块会动态更新权限模型,达到权限模型即插即用的目的。保证老业务不间断的同时,增加新的业务。
在一些实施例中,授权服务模块还用于将注册请求转换为可识别的权限定义,并将权项定义发送给安全管理员包括:
授权服务模块将注册请求通过树状结构组织起来,转换为安全管理员可识别的权限定义。
可以理解,授权服务模块收到各安全边车代理模块的权限模型的注册请求后,通过树状结构组织起来,最终呈现给安全管理员可识别的权限定义。
需要说明的是,本发明实施例中的一个认证服务模块可以对应多个微服务模块,每一个微服务模块中都包括一个安全边车代理模块。本发明实施例中的一个授权服务模块可以对应多个微服务模块,每一个微服务模块中都包括一个安全边车代理模块。
在一些实施例中,安全管理员为指定用户授予不同应用的不同的业务权限,如网元001的告警查看权限。其中,当用户被授予某个业务权限时,意味着他有权访问这个请求,安全边车代理作为认证服务底层框架的组成,在服务启动时自动加载权限模型。在一些实施例中,安全管理员可以通过获取客户端授权页面,就可以展示应用服务权限模型。
在一些实施例中,业务处理模块还用于,若微服务没有注册权限模型,则当用户身份认证成功后,则可以直接响应HTTP请求。
在一些实施例中,响应HTTP请求包括:
安全边车代理模块判定授权令牌有效,且完成了授权权限与请求权限的确权,确定了需要响应内容后,将该需要响应内容请求发送给微服务模块中的业务处理模块,业务处理模块依需要响应内容请求完成资源整合后,将该需要响应内容请求所对应的响应内容经由安全边车代理模块返回给用户。
在一些实施例中,本发明实施例提供的一种认证装置600如图6所示,该认证装置600包含由认证服务模块6011和授权服务模块6012组成的安全管控平面601,若干个由安全边车代理模块和业务处理模块组成的微服务模块,安全管理员603。其中:
认证服务模块6011,主要负责用户身份合法性的校验,用户令牌的管理,颁发和校验,用户会话生命周期的管理,用户的访问控制。
授权服务模块6012,负责系统权限管理,可以接收各服务的注册的权限模型,为各服务提供精细的权限配置。同时为代理提供实际的鉴权服务。
安全边车代理模块,作为各业务微服务底层支撑的组成部分,作为认证代理为各业务提供透明的认证和鉴权服务。同时作为授权代理还可以为各服务提供统一的权限模型的收集服务。安全边车代理是无侵入式的,和微服务的业务处理完全解耦,适用于多语言的微服务框架,为微服务业务开发提供极大便利。
安全管理员603,为用户提供精细的权限分配和安全策略配置。
在一些实施例中,认证装置600还包括第三方认证服务器604,通过认证服务模块6011与第三方认证服务器604的交互,完成用户身份等信息认证工作。
本发明实施例提供了一种认证装置,该装置通过安全边车代理模块来获取用户的HTTP请求;若HTTP请求所对应的本地会话不存在,则认证服务模块对用户进行身份认证,颁发认证令牌,授权服务模块颁发授权令牌,微服务模块根据授权令牌所对应的业务权限,响应HTTP请求,解决了现有相关技术中不能同时支持认证授权,系统集成复杂,用户体验度低的问题,达到了支持同时认证授权、支持负责业务的细粒度授权,解决系统集成的复杂性的问题,提升用户体验。
进一步地,通过本发明的认证方法的实现,可以实现支持用户自定义的细粒度权限授权控制方式,通用为资源实例和操作级别授权。
进一步地,现有的服务化认证授权没有一套标准的方式,认证授权流程的安全性也是一个比较大的门槛,同时细粒度的授权大多数框架都不足以支撑,导致大多数的授权都是各自为阵,实现复杂。而本发明提供的认证方法对使用者来说实现较为简单,基本不需要开发。
实施例三:
下面通过一个具体的实施例将本发明所提供的认证方法作进一步说明,参见图8-1和图8-2,图8-1为本发明实施例三所提供的认证方法中权限分配步骤的一种具体实施例,图8-2为本发明实施例三所提供的认证方法中经权限分配后进行认证的一种具体实施例,如图8-1和图8-2所示:
S801:权限模型加载;
在一些实施例中,在环境中部署认证服务模块806和授权服务模块802,安全边车代理A8012作为独立的进程部署于在EMS微服务模块A801内,安全边车代理B8042作为独立的进程部署于在EMS微服务模块B804内,其中安全边车代理不影响其所在业务微服务集成的部署,通过拦截HTTP请求,解析其中的认证授权信息,来完成业务安全权限的控制。
业务服务按照授权服务模块A802定义的权限模型格式定义业务服务的权限模型文件,部署于业务服务中。权限模型就是业务请求的资源和其实际业务权限的映射关系,权限模型可以定义为用户的单个操作和资源实例的粒度,操作和资源分别以预定义的树状结构组织。权限粒度由业务微服务自己控制,理论上粒度无限细分。而现状中框架的权限粒度只会控制是否有权可以访问某个微服务,或者最多支持到某个服务接口是否可以访问,无法对服务接口中的资源实例和执行的操作进行权限的判定。业务服务把权限模型文件部署在指定的服务目录,权限模型就是业务请求的资源和其实际业务权限的映射关系,用户被授予某个业务权限,意味着他有权访问这个请求。
需要说明的是,同一个授权服务模块可以对应多个微服务模块。
S802:权限模型注册;
在一些实施例中,权限模型文件部署,EMS微服务模块A801启动时,安全边车代理模块A8012作为认证服务底层框架的组成,在EMS微服务模块A801启动时候,自动加载模型文件。安全边车代理模块A解析并加载权限模型,然后通过REST接口注册到授权服务模块802,以便权限分配时候使用。
安全边车代理模块A在解析权限模型文件,然后把模型注册到授权服务模块,授权服务模块立即就可以加载并更新当前的权限模型。权限模型注册接口是开放标准的REST(Representational State Transfer,表述性状态传递)接口,各业务服务如果在运行期增加业务,同样可以直接调用权限模型注册接口,授权服务模块会动态更新权限模型,达到权限模型即插即用的目的。保证老业务不间断的同时,增加新的业务。
S803:将权限模型转化为权限定义;
在一些实施例中,授权服务模块收到各安全边车代理模块A的权限模型注册请求,通过树状结构组织起来,呈现给安全管理员803可识别的权限定义
S804:配置并为用户分配权限。
在一些实施例中,安全管理员获取客户端授权页面,就可以展示应用服务权限模型。安全管理员可以为合适的用户分配合适的业务操作权限。如网元001的告警查看权限。
S805:请求资源;
在一些实施例中,用户在浏览器805输入EMS微服务A801的某个请求URL,发送请求到EMS微服务A801,被安全边车代理模块A8012拦截后,认证代理会缓存本地会话和授权令牌,代理会判定该请求是否已经有本地会话存在,本地会话代表着用户暂时持有授权令牌,如果本地会话存在,则授权令牌合法,则根据本地会话取到授权令牌,直接走步骤S815,否则如果本地会话不存在,则执行步骤S806。发送跳转到认证服务器请求身份认证的请求到浏览器。
S806:请求跳转;
发送跳转到认证服务器请求身份认证的请求到浏览器805。
S807:跳转到认证服务;
在一些实施例中,浏览器805收到跳转请求,浏览器把请求跳转到认证服务模块A806,认证服务模块A判定该请求的cookie中是否有具备认证请求发放的全局身份令牌。全局身份令牌是用户在微服务框架中的全局身份令牌,如果全局身份令牌存在,并判定其合法性,如果合法,则执行步骤S809。如果全局身份令牌不存在或者不合法,则执行步骤S808。
S808:用户身份认证;
在一些实施例中,认证服务模块A806会返回用户一个身份认证的页面,用户提供身份凭证信息,如用户名和密码等,提交到认证服务。认证服务模块A805进行身份凭证校验,校验通过后,生成两个令牌,一个全局身份令牌,一个是发放给EMS微服务A本身的认证令牌。全局身份令牌置于cookie中作为多个服务全局的会话标记,标志着用户的身份。认证令牌是既是EMS微服务A的身份凭证,同时也包含用户的身份信息,附加在步骤S809的跳转URL参数中,以便传递到EMS微服务A。
S809:认证成功,请求跳转;
在一些实施例中,该步骤是步骤S807的响应请求,该请求同样只是个请求浏览器跳转的响应,跳转URL为EMS微服务A在步骤S807中传递url叠加认证令牌。
S810:跳转回原请求;
在一些实施例中,浏览器把执行第S809的跳转URL到EMS微服务模块A。EMS微服务模块A的安全边车代理模块A解析到令牌中的用户信息,可以传递到业务,确定当前访问用户。由于EMS微服务模块A定义了注册了业务权限模型(上述步骤S801-S804),需要执行步骤S811。
S811:请求授权令牌;
安全边车代理模块A传入EMS微服务模块A的认证令牌,到认证服务模块A获取用户的授权令牌
S812:请求授权令牌;
认证服务模块A接收安全边车代理模块A的认证令牌,验证有效后,到授权服务模块为用户申请授权令牌,授权令牌由JWT(JSON Web Token,JSON web令牌)构成,其中携带用户的身份信息。
S813:返回授权令牌;
授权服务模块返回授权令牌给认证服务模块。
S814:返回授权令牌;
认证服务模块把授权令牌返回给安全边车代理模块A。
S815:获取业务权限;
在一些实施例中,安全边车代理模块A持有该授权令牌,同时解析权限模型,得到希望授权的操作或者资源,此时的业务权限也即为请求权限。然后到授权服务模块申请用户在EMS微服务模块A的操作或者资源的权限。此时,授权服务模块返回的可以理解为授权权限。
S816:返回业务权限;
授权服务模块校验授权令牌的合法性,如果合法则返回安全边车代理模块A所申请的操作和资源权限,也即授权权限。如果授权令牌不合法,则返回用户授权失败,需要重新申请认证令牌,再拿认证令牌获取新的合法授权令牌。
S817:获取业务资源;
安全边车代理模块A根据返回的业务权限(授权权限)判定用户请求是否有权限访问。如果有权访问,则把请求和当前用户信息传递到EMS微服务模块A的业务处理模块A8011,处理完毕。
具体的,当用户的请求权限全部包括在授权权限内时,则完全响应用户的业务请求(HTTP请求);当用户的请求权限中存在至少一部分与授权权限无交叉时,则仅响应两者存在交叉的请求,对于超出授权权限的请求权限不予响应;当请求权限与授权权限完全没有交集时,则对该业务请求不予响应。
S818:响应业务请求。
返回对用户的响应。在一些实施例中可以理解为,根据安全边车代理模块A所确定的最终的响应权限来对应获取相应的资源或者进行相应的操作。其中响应权限为授权权限与请求权限所交集的部分权限。
实施例四:
本实施例还提供了一种终端,参见图9所示,其包括处理器901、存储器903及通信总线902,其中:
通信总线902用于实现处理器901和存储器903之间的连接通信;
处理器901用于执行存储器903中存储的一个或者多个计算机程序,以实现上述各实施例中的包络跟踪方法中的至少一个步骤。
实施例五:
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、计算机程序模块或其他数据)的任何方法或技术中实施的易失性或非易失性、可移除或不可移除的介质。计算机可读存储介质包括但不限于RAM(Random Access Memory,随机存取存储器),ROM(Read-Only Memory,只读存储器),EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)、闪存或其他存储器技术、CD-ROM(Compact Disc Read-Only Memory,光盘只读存储器),数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。
本实施例中的计算机可读存储介质可用于存储一个或者多个计算机程序,其存储的一个或者多个计算机程序可被处理器执行,以实现上述各实施例中的认证方法的至少一个步骤。
本实施例还提供了一种计算机程序(或称计算机软件),该计算机程序可以分布在计算机可读介质上,由可计算装置来执行,以实现上述各实施例中的异常行为判定方法的至少一个步骤;并且在某些情况下,可以采用不同于上述实施例所描述的顺序执行所示出或描述的至少一个步骤。
应当理解的是,在某些情况下,可以采用不同于上述实施例所描述的顺序执行所示出或描述的至少一个步骤。
本实施例还提供了一种计算机程序产品,包括计算机可读装置,该计算机可读装置上存储有如上所示的计算机程序。本实施例中该计算机可读装置可包括如上所示的计算机可读存储介质。
可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。
此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、计算机程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。