用户认证方法和装置与流程

文档序号:14120138阅读:212来源:国知局
用户认证方法和装置与流程

本发明涉及认证鉴权领域,特别是一种用户认证方法和装置。



背景技术:

目前在宽带认证鉴权领域,当收到来自用户的宽带认证鉴权请求后,会分配一个线程处理该请求,由线程顺序执行包括账号密码校验、有效期校验、余额校验、捆绑属性校验等步骤,线程处理完一个鉴权请求后,获取下一个鉴权请求接着处理。

由于认证鉴权为顺序执行,需要执行完最后一个步骤后才能够得到认证结果,效率低下,一旦遇到复杂业务流程就会持续占用该线程,处理时间过长,且进程池、线程池内资源不能够释放,降低系统的吞吐量;同时,由于用户在宽带认证过程中一旦遇到阻塞会反复请求认证鉴权,因此宽带认证鉴权需求量巨大,可能会导致报文队列堵塞和积压,降低系统的业务承载能力。



技术实现要素:

本发明的一个目的在于提高宽带认证鉴权的效率和鉴权设备的承载能力。

根据本发明的一个方面,提出用户认证方法,包括:获取用户认证请求;根据用户认证请求将对用户的认证操作分解成多个处理单元;根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元;根据各个线程反馈的处理单元的处理结果确定认证结果。

可选地,根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元包括:通过多进程分层获取业务请求;根据处理单元的数量将各个进程分为多个线程,并行执行认证操作,每个线程执行一个处理单元;获取各个线程的处理结果,并释放线程。

可选地,根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元还包括:多个线程通过基于任务的异步gdbm(gnudatabasemanager,革奴数据管理)执行带多重异步的同步查询,获取查询数据;利用协议缓冲protobuf的反射机制,根据缓冲区的预定结构体将各个线程获取的查询数据填充到缓冲区中,以便根据查询数据确定认证结果。

可选地,根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元还包括:若线程执行处理单元的时间达到预定时间阈值,则确定线程的处理结果为处理失败,释放线程。

可选地,根据各个线程反馈的处理单元的处理结果确定认证结果包括:若各个线程反馈的处理结果均为处理成功,则认证结果包括认证成功标识;若存在线程反馈的处理结果为处理失败,则认证结果包括认证失败标识和失败原因信息。

可选地,还包括:根据认证结果反馈用户授权信息。

通过这样的方法,能够将对用户的认证操作分为多个处理单元,为单个用户认证请求分配多个线程,每个线程执行一个处理单元,多个线程并行执行认证操作,从而提高了认证速度;同时,将复杂的认证过程拆解成单个处理单元能够缩短单个线程的占用时间,避免长时间占用单个线程造成的队列堵塞挤压,提高系统的业务承载能力。

根据本发明的另一个方面,提出一种用户认证装置,包括:请求获取模块,用于获取用户认证请求;认证分割模块,用于根据用户认证请求将对用户的认证操作分解成多个处理单元;并行处理模块,用于根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元;认证结果确定模块,用于根据各个线程反馈的处理单元的处理结果确定认证结果。

可选地,并行处理模块包括:请求分层获取单元,用于通过多进程分层获取业务请求;多线程并行执行单元,用于根据处理单元的数量将进程分为多个线程,并行执行认证操作,每个线程执行一个处理单元;处理结果获取单元,用于获取各个线程的处理结果;线程释放单元,用于释放完成执行处理单元的线程。

可选地,并行处理模块还包括:数据查询单元,用于利用多个线程通过基于任务的异步gdbm执行带多重异步的同步查询,获取查询数据;数据填充单元,用于利用protobuf的反射机制,根据缓冲区的预定结构体将各个线程获取的查询数据填充到缓冲区中,以便根据查询数据确定认证结果。

可选地,校验结果获取单元还用于在线程执行处理单元的时间达到预定时间阈值时,确定线程的处理结果为处理失败;线程释放单元还用于在线程执行处理单元的时间达到预定时间阈值时,释放线程。

可选地,认证结果确定模块用于:当各个线程反馈的处理结果均为处理成功时,确定认证结果包括认证成功标识;当存在线程反馈的处理结果为处理失败时,确定认证结果包括认证失败标识和失败原因信息。

可选地,还包括:信息反馈模块,用于根据认证结果反馈用户授权信息。

这样的装置能够将对用户的认证操作分为多个处理单元,为单个用户认证请求分配多个线程,每个线程执行一个处理单元,多个线程并行执行认证操作,从而提高了认证速度;同时,将复杂的认证过程拆解成单个处理单元能够缩短单个线程的占用时间,避免长时间占用单个线程造成的队列堵塞挤压,提高系统的业务承载能力。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明的用户认证方法的一个实施例的流程图。

图2为本发明的用户认证方法中执行处理单元的一个实施例的流程图。

图3为本发明的用户认证方法的另一个实施例的流程图。

图4为本发明的用户认证装置的一个实施例的示意图。

图5为本发明的用户认证装置中请求分层获取模块的一个实施例的示意图。

图6为本发明的用户认证装置的另一个实施例的示意图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

本发明的用户认证方法的一个实施例的流程图如图1所示。

在步骤101中,获取用户认证请求。在一个实施例中,用户认证请求中可以包括用户名、密码、用户种类等信息。

在步骤102中,根据用户认证请求,将对用户的认证操作分解成多个处理单元。处理单元可以是最小的处理单位,可以对认证操作进行逐步分解,直至无法再次分解,得到处理单元。在一个实施例中,根据用户的不同、用户认证请求的不同,认证操作可以包括账号密码校验、有效期校验、余额校验、捆绑属性校验、业务属性校验等中的一个或多个,因此处理单元的数量可能会不同。在一个实施例中,可以根据用户认证请求判断用户类型,确定需要对用户执行哪个或哪些认证操作。如对于先付费用户需要执行账号密码校验、有效期校验、余额校验等,进一步将对用户的认证操作分解成多个处理单元。

在步骤103中,根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元。

在步骤104中,根据各个线程反馈的处理结果确定认证结果。在一个实施例中,若各个线程反馈的处理结果均为处理成功,则认证结果为认证成功标识;若存在线程反馈的处理结果为处理失败,则认证结果为认证失败。

通过这样的方法,能够将对用户的认证操作分为多个处理单元,为单个用户认证请求分配多个线程,每个线程执行一个处理单元,多个线程并行执行认证操作,从而提高了认证速度;同时,将复杂的认证过程拆解成单个处理单元能够缩短单个线程的占用时间,避免长时间占用单个线程造成的队列堵塞积压,提高系统的业务承载能力。

本发明的用户认证方法中执行校验请求的一个实施例的流程图如图2所示。

在步骤201中,通过多进程分层获取业务请求。在一个实施例中,分层分别获取多个请求队列的用户认证请求,且按照分层顺序为用户认证请求分配进程。当进程执行完当前的认证操作后,对下一分层中的用户认证请求执行认证操作。

在步骤202中,根据处理单元的数量将进程分为多个线程并行执行认证操作,每个线程执行一个处理单元,从而实现将线形处理的认证操作转化为任务矩阵的方式进行处理,提高认证效率。

在步骤203中,获取各个线程的处理结果,并释放线程。

通过这样的方法,能够按照确定的处理单元的数量为认证操作分配线程,保证每个线程执行一个处理单元,保证快速执行,提高执行效率;线程完成校验操作后随即释放,从而保证不会持续占用资源,在下一个认证请求到来时有足够的线程资源供分配。

在一个实施例中,需要从数据库中获取用户数据,以便根据用户数据执行认证操作。在一个实施例中,可以利用多个线程通过基于任务的异步gdbm执行带多重异步的同步查询,获取查询数据。通过这样的方法,能够实现利用多个线程进行用户多种数据的并发查询,提高了查询效率,避免因数据获取的过程降低用户认证效率。

在一个实施例中,当多个线程获取用户数据后,可以利用protobuf的反射机制,根据缓冲区的预定结构体将各个线程获取的查询数据填充到缓冲区中,以便根据查询数据确定认证结果。通过这样的方法能够实现数据的自动填充,也便于基于预定结构体执行认证,确定处理结果,从而进一步提高了认证效率。

在一个实施例中,利用基于任务的异步gdbm执行查询处理具体可以包括:

上述查询过程由不同线程分别执行,且并行处理,保证每个线程的执行效率。通过这样的方法,将原有的用户请求查询队列改变成了查询矩阵,由多个线程执行,提高了运行效率。当所有查询完成后,返回初始状态,保证在下一个用户查询请求到来时能够迅速提供服务,无需反复调用消耗资源。在一个实施例中,可以将常用数据缓存在内存中,次常用数据缓存在缓存中,不常用数据存放在数据库的文件内,从而能够进一步提高数据查询效率。

在一个实施例中,存储用户信息的数据库可以为多台硬件设备,不同设备之间互相连接,实现资源、信息的共享。在一个实施例中,可以根据用户认证请求的预定字段进行哈希运算,确定将用户分配到哪台硬件设备中执行认证操作,由ice(internetcommunicationsengine,分布式对象技术)总线进行控制,从而便于多设备间的平衡使用,有利于维持用户认证的稳定运行。

在一个实施例中,可以基于protocolbuffer语言的反射机制自动合成认证结果消息。如通过以下:

的构造函数提供了处理请求标识和一个由结构体序列化好的缓冲区,通过反射将查询数据自动填充到缓冲区的对应字段,从而实现数据的自动填充,也便于基于预定结构体执行认证,确定处理结果,进一步提高了认证效率。

在一个实施例中,为了提高系统的稳定性,保证线程不会堵塞,可以设置预定时间阈值,若线程执行认证操作的时间达到预定时间阈值,则确定线程执行处理单元的处理结果为处理失败,释放线程。通过这样的方法,能够防止由于线程错误导致的持续占用线程,保证了系统的稳定性。另外,与现有技术中相比,由于线程对于一个用户认证请求只执行一个处理单元,执行时间相对固定,因此便于工作人员配置合适的预定时间阈值,保证系统运行的效率。

在一个实施例中,若各个线程反馈的处理结果均为处理成功,则认证结果包括认证成功标识。若存在线程反馈的处理结果为处理失败,则认证结果包括认证失败标识和处理失败的字段信息,根据认证结果能够确定认证失败,以及确定认证失败的原因。

通过这样的方法,能够便于识别和记录认证失败的原因,从而便于反馈给用户,帮助用户有针对性的进行错误排除,实现正常的接入网络。

本发明的用户认证方法的另一个实施例的流程图如图3所示。

在步骤301中,获取用户认证请求。在一个实施例中,用户认证请求中可以包括用户名、密码等信息。

在步骤302中,根据用户认证请求,将对用户的认证操作分解成多个处理单元。在一个实施例中,可以根据用户认证请求进行分析,将认证过程逐渐分解,直至分解为处理单元。

在步骤303中,根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元。在一个实施例中,可以利用lua脚本语言对radius(remoteauthenticationdialinuserservice,远程用户拨号认证系统)框架进行灵活编程配置,实现多线程的并行处理。

在步骤304中,根据各个线程反馈的处理结果确定认证结果。在一个实施例中,若各个线程反馈的处理结果均为处理成功,则认证结果为认证成功;若存在线程反馈的处理结果为处理失败,则认证结果为认证失败。

在步骤305中,根据认证结果返回授权信息。若认证成功,则向用户授权,允许用户使用网络;若认证失败,则不允许用户使用网络,同时,可以向用户返回全部的认证失败的原因。

通过这样的方法,能够利用多个线程并行处理用户认证中的多个处理单元,保证执行的效率;能够将失败的原因全部反馈给用户,帮助用户有针对性的进行错误排除,避免用户反复发起用户认证请求、不断发现新的错误导致的请求量急剧增加,进一步降低了系统的压力,保证系统的稳定性。

本发明的用户认证装置的一个实施例的示意图如图4所示。其中,请求获取模块401能够获取用户认证请求。在一个实施例中,用户认证请求中可以包括用户名、密码等信息。认证分割模块402根据用户认证请求,将对用户的认证操作分解成多个处理单元。在一个实施例中,可以根据用户认证请求进行分析,将认证过程分解,直至分解为处理单元。在一个实施例中,根据用户的不同、用户认证请求的不同,认证操作可以包括账号密码校验、有效期校验、余额校验、捆绑属性校验、业务属性校验等中的一个或多个,因此处理单元的数量可能会不同。在一个实施例中,可以根据用户认证请求判断用户类型,确定需要对用户执行哪个或哪些认证操作。如对于先付费用户需要执行账号密码校验、有效期校验、余额校验等,进一步将对用户的认证操作分解成多个处理单元。并行处理模块403能够根据处理单元的数量分配多个线程并行执行认证操作,每个线程执行一个处理单元。认证结果确定模块404能够根据各个线程反馈的处理结果确定认证结果。在一个实施例中,若各个线程反馈的处理结果均为处理成功,则认证结果为认证成功;若存在线程反馈的处理结果为处理失败,则认证结果为认证失败。

这样的装置能够将对用户的认证操作分为多个校验请求,为单个用户认证请求分配多个线程,每个线程执行一个校验请求,多个线程并行执行认证操作,从而提高了认证速度;同时,将复杂的认证过程拆解成简单的单个校验请求能够缩短单个线程的占用时间,避免长时间占用单个线程造成的队列堵塞积压,提高系统的业务承载能力。

本发明的用户认证装置中并行处理模块的一个实施例的示意图如图5所示。其中,请求分层获取单元501能够通过多进程分层获取业务请求。在一个实施例中,分层分别获取多个请求队列的用户认证请求,且按照分层顺序为用户认证请求分配进程。当进程执行完当前的认证操作后,对下一分层中的用户认证请求执行认证操作。多线程并行执行单元502能够根据处理单元的数量将进程分为多个线程并行执行认证操作,每个线程执行一个处理单元。处理结果获取单元503能够获取各个线程的处理结果。线程释放单元504能够释放完成执行处理单元的线程。

通过这样的方法,能够按照确定的处理单元的数量为认证操作分配线程,保证每个线程执行一个处理单元,保证快速执行,提高执行效率;线程完成校验操作后随即释放,从而保证不会持续占用资源,在下一个认证请求到来时有足够的线程资源供分配。

在一个实施例中,需要从数据库中获取用户数据,以便根据用户数据执行认证操作。在一个实施例中,并行处理模块包括数据查询单元,用于利用多个线程通过基于任务的异步gdbm执行带多重异步的同步查询,获取查询数据。

这样的装置能够实现利用多个线程进行用户多种数据的并发查询,提高了查询效率,避免因数据获取的过程降低用户认证效率。

在一个实施例中,并行处理模块还可以包括数据填充单元,能够在多个线程获取用户数据后,利用protobuf的反射机制,根据缓冲区的预定结构体将各个线程获取的查询数据填充到缓冲区中,以便根据查询数据确定认证结果。这样的装置能够实现数据的自动填充,也便于基于预定结构体执行认证,确定处理结果,从而进一步提高了认证效率。

在一个实施例中,为了提高系统的稳定性,保证线程不会堵塞,可以设置预定时间阈值,若线程执行认证操作的时间达到预定时间阈值,则处理结果获取单元503确定线程执行的处理单元的处理结果为处理失败,线程释放单元504释放该线程。

这样的装置能够防止由于线程错误导致的持续占用线程,保证了系统的稳定性。另外,与现有技术中相比,由于线程对于一个用户认证请求只执行一个处理单元,执行时间相对固定,因此便于工作人员配置合适的预定时间阈值,保证系统运行的效率。

在一个实施例中,若各个线程反馈的处理结果均为处理成功,则认证结果包括认证成功标识。若存在线程反馈的处理结果为处理失败,则认证结果确定模块确定的认证结果包括认证失败标识和处理失败的字段信息,根据认证结果能够确定认证失败,以及确定认证失败的原因。

这样的装置能够便于识别和记录认证失败的原因,从而便于反馈给用户,帮助用户有针对性的进行错误排除,实现正常的接入网络。

本发明的用户认证装置的另一个实施例的示意图如图6所示。其中,请求获取模块601、认证分割模块602、并行处理模块603和认证结果确定模块604的结构和功能与图4的实施例中相似。用户认证装置还包括信息反馈模块605,能够根据认证结果返回授权信息。若认证成功,则向用户授权,允许用户使用网络;若认证失败,则不允许用户使用网络,同时,可以向用户返回全部的认证失败的原因。

这样的装置能够利用多个线程并行处理用户认证中的多个处理单元,保证执行的效率;能够将失败的原因全部反馈给用户,帮助用户有针对性的进行错误排除,避免用户反复发起用户认证请求、不断发现新的错误导致的请求量急剧增加,进一步降低了系统的压力,保证系统的稳定性。

在一个实施例中,当话务员在接到用户故障报告时,能够利用本发明的装置或方法进行用户认证,同时获取多个认证错误,从而能够根据错误信息逐个对报错进行处理,也可以通过内置程序在后台对出现认证错误的类型分别进行解绑定、清除在线、同步速率等一键操作,确保用户仅通过一次故障申告即处理完所有认证报错的故障,大大提高了故障处理效率,提升了用户体验。

在另一个实施例中,当电信维护人员处理故障时,也可以通过本发明的装置或方法,根据报错信息对故障进行准确判断以提高故障处理效率,并且可以更好地分析用户拨号行为,带来了立体化的故障信息显示,提高了工作效率。

在一个实施例中,工作人员可以对用户认证装置进行配置,包括配置端口、线程、服务总线、调用入口,以及全局、个体、临时变量、参数等等。这样的装置应用起来更加灵活,且能够保证装置的可控性。

在一个实施例中,可以利用服务器性能测试工具benchmark(基准)对用户认证装置进行测试,benchmark程序每创建十万个报文就会暂停,按回车后继续。通过查看icomet进程的内存占用,最终,得出如下数据:

可以看到,每一个连接大约占用了2.7kb的内存。此时,服务器内存占用率小,相对空闲,能够证明用户认证装置能够实现大并发低延迟的用户认证处理。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1