发明内容
本发明提供一种用户终端的认证方法、装置及系统,防止非法用户对AAA服务器的攻击,保证合法用户正常认证。
为达到上述目的,本发明一方面提供了一种用户终端的认证方法,应用于包括至少一个用户终端、一个接入设备以及一个认证服务器的系统中,所述方法包括:
所述接入设备接收所述用户终端发送的包含用户名和密码的认证请求消息,所述用户名包括主体用户名和校验位标识;
所述接入设备根据预设的校验策略判断所述主体用户名与所述校验位标识是否匹配;
当所述接入设备判断所述主体用户名与所述校验位标识匹配时,所述接入设备将所述用户终端的认证请求消息转发给所述认证服务器进行处理。
优选的,当所述接入设备判断所述主体用户名与所述校验位标识不匹配时,还包括:
所述接入设备向所述用户终端发送认证终止消息;或,
所述接入设备丢弃所述认证请求消息。
优选的,所述包含主体用户名和校验位标识的用户名,具体通过以下策略生成:
所述认证服务器接收包含所述主体用户名和密码的注册请求;
当所述认证服务器判断所述主体用户名可以注册时,根据预设的校验策略,为所述主体用户名生成校验位标识;
所述认证服务器保存所述主体用户名和所述校验位标识组成的用户名的注册信息,并向所述注册请求的注册端返回所述用户名的注册信息。
优选的,所述预设的校验策略具体通过以下方式设置:
分别在所述认证服务器和所述接入设备中设置所述校验策略;或,
在所述认证服务器中设置所述校验策略,所述认证服务器将所述校验策略发送给所述接入设备。
另一方面,本发明还提供了一种接入设备,包括:
接收模块,用于接收所述用户终端发送的包含用户名和密码的认证请求消息,所述用户名包括主体用户名和校验位标识;
判断模块,用于根据预设的校验策略判断所述接收模块所接收的主体用户名与校验位标识是否匹配;
处理模块,用于当所述判断模块判断所述主体用户名与所述校验位标识匹配时,将所述用户终端的认证请求消息转发给所述认证服务器进行处理。
优选的,所述处理模块,还用于当所述判断模块判断所述主体用户名与所述校验位标识不匹配时,向所述用户终端发送认证终止消息,或丢弃所述认证请求消息。
优选的,所述接入设备还包括:
策略模块,用于预先设置所述校验策略,或接收所述认证服务器发送的所述校验策略。
另一方面,本发明还提供了一种服务器,包括:
注册模块,用于接收包含所述主体用户名和密码的注册请求;
识别模块,用于判断所述主体用户名是否符合注册规则;
生成模块,用于在所述识别模块判断所述主体用户名符合注册规则,可以注册时,根据预设的校验策略,为所述主体用户名生成校验位标识;
存储模块,用于保存所述主体用户名和所述生成模块所生成的校验位标识组成的用户名的注册信息,并向所述注册请求的注册端返回所述用户名的注册信息。
优选的,所述服务器还包括:
策略模块,与所述生成模块电性连接,用于预先设置所述校验策略,并且在接入设备未设置校验策略时将所述校验策略发送给所述接入设备。
另一方面,本发明还提供了一种认证系统,包括至少一个用户终端、一个接入设备以及一个认证服务器,其中:
所述用户终端,用于向所述接入设备发送包含用户名和密码的认证请求消息,所述用户名包括主体用户名和校验位标识;
所述接入设备,用于根据预设的校验策略判断所述用户终端发送的所述认证请求消息中包括的所述主体用户名与所述校验位标识是否匹配,并在判断所述主体用户名与所述校验位标识匹配时,将所述用户终端的认证请求消息转发给所述认证服务器;
所述认证服务器,用于根据所述接入设备转发的认证请求消息对所述用户名进行认证,并将认证结果通过接入设备返回给所述用户终端。
优选的,所述认证服务器,还用于接收包含所述主体用户名和密码的注册请求,在判断所述主体用户名符合注册规则,可以注册时,根据预设的校验策略,为所述主体用户名生成校验位标识,并保存所述主体用户名和所述校验位标识组成的用户名的注册信息,向所述注册请求的注册端返回所述用户名的注册信息。
与现有技术相比,本发明具有以下优点:
通过本发明,接入设备在收到用户上线时的认证信息时,可以根据校验算法,初步判断用户名是否合法,如果合法,再去认证服务器上认证,如果不合法,直接拒绝用户上线,以防止认证服务器收到攻击,影响合法用户正常认证。
具体实施方式
如背景技术所述,由于客户端用户信息列表只存在于AAA服务器中,接入设备上没有关于客户端用户名的任何信息,所以接入设备无法判断用户是否合法。
本发明为了解决现有技术中存在的问题,提出了一种用户终端的认证方法,不仅适用于上述的包括AAA服务器的认证系统中,而且还适用于包括同样具有身份认证功能的认证系统中。
首先,在认证服务器上创建用户信息时,为每个用户所创建的用户名都由两部分组成:“主体用户名”部分和“校验位标识”部分。其中,校验位标识部分的长度可以是N位(N大于等于0),而主体用户名部分则可根据用户个人的喜好按照当前系统的用户名命名规则来创建,例如,当前系统要求主体用户名部分为6-12位的字母和数字组合,不能包含其他符号,则主体用户名部分只能在符合以上规则的前提下创建。
校验位标识部分是由认证服务器根据主体用户名部分,通过一定的校验策略计算得出来的,同时,接入设备也要求能执行类似的校验策略。这样,当接入设备接收到用户上线的消息时,通过查看用户名中的主体用户名部分和校验位标识部分是否符合上述的校验策略,就可以初步判断当前请求上线的用户是否合法。如果该用户不合法,则提示该用户认证失败,拒绝该用户的认证请求,让该用户下线;反之,如果接入设备初步检查该用户合法,则将该用户的用户名和密码等信息发送到认证服务器,由认证服务器来判断该用户的信息是否合法。
通过上述的流程,当一个用户请求接入当前系统进行认证时,分别由接入设备和认证服务器对该用户的合法性进行了两次检查,其中,第一次检查由接入设备执行,接入设备的检查是初步检查,通过判断请求认证的用户的用户名中所包含的主体用户名部分和校验位标识部分是否符合预设的检验策略,来确认用户是否合法,这样的检查在于对伪造认证信息的初步过滤,即根据用户名构成是否合法来进行的过滤,避免大量伪造认证信息的攻击,减轻了认证服务器的认证负担;第二次检查则是由认证服务器执行,通过判断请求认证的用户的用户名和密码是否与认证服务器中所保存的用户注册信息相一致,这样的判断是对用户身份的真正识别,判断请求认证的用户是否是在认证服务器上注册的合法用户。
其中,上述的由认证服务器执行的第二次检查与现有技术中的认证流程相一致,都是通过预先在认证服务器中保存的用户信息判断是否接受用户的认证请求,但是,上述的由接入设备进行的第一次检查则是本发明提出的区别于现有技术的认证流程,在现有技术中,接入设备不保存任何用户信息,只是对用户的认证请求进行转发,而不能实现过滤功能。
而在本发明所提出的技术方案中,用户通过用户终端发送的认证请求消息所包含的用户名信息中同时包括主体用户名部分和校验位标识部分两种信息,而这两种信息是用户最初在认证服务器中进行注册时,由认证服务器按照预设的校验策略一并生成并返回给用户的,因此,上述的主体用户名部分和校验位标识部分存在与校验策略相对应的匹配关系,接入设备同样可以执行上述的校验策略,并根据该校验策略对用户通过用户终端发送的主体用户名部分和校验位标识部分进行匹配关系的判断,如果判断结果是该用户的主体用户名部分和校验位标识部分匹配,即符合校验规则,则认为该用户的用户名构成合法,将该用户的认证请求消息转发给认证服务器进行处理,反之,如果判断结果是该用户的主体用户名部分和校验位标识部分不匹配,即不符合校验规则,则认为该用户的用户名构成不合法,向用户终端返回认证终止消息,拒绝该用户的认证请求,或者,直接将该用户发送的认证请求消息进行丢弃,不做任何进一步处理。
通过上述说明,可以看出本发明的技术方案的重点在于由接入设备所执行的第一次检查,下面,结合具体的应用环境,对本发明所提出的技术方案进行详细说明。
如图3所示,为本发明所提出的一种用户终端的认证方法,应用于包括至少一个用户终端、一个接入设备以及一个认证服务器的系统中,为了方便叙述,后续说明中直接以AAA服务器为例来说明认证服务器的处理流程,具体包括以下步骤:
步骤S301、接入设备接收用户终端发送的包含用户名和密码的认证请求消息,其中,用户名包括主体用户名和校验位标识。
如前述的技术方案的说明,在本发明的技术方案中,用户通过用户终端向接入设备发送的认证请求消息与现有的技术方案相似,同样包括用户名和密码,但是,本发明的技术方案与现有技术的区别在于用户名部分进一步包括两部分信息,即主体用户名部分和校验位标识部分。这两部分信息是在用户向AAA服务器进行初始化注册的时候,就由AAA服务器创建并分配给用户的,具体通过以下流程产生:
(1)AAA服务器接收用户提交的包含主体用户名和密码的注册请求。
本步骤与现有技术的处理流程相一致,由用户通过用户终端向AAA服务器提出注册请求,该注册请求中包含用户自定义的主体用户名和密码,其中的主体用户名需要遵循当前系统的命名规则,否则,将作为非法用户名而直接拒绝注册,如前述的命名规则示例所述,具体的命名规则中包括用户名的长度限制区间,用户名中的字符类型限制,是否允许在用户名中使用符号等信息,只有符合上述的命名规则,用户对该主体用户名的注册请求才会被允许继续进行。
需要指出的是,在现有技术中,不存在主体用户名的概念,用户按照上述的命名规则所提出的字符组合将直接被确认为待注册的用户名进行处理,如果在后续的注册过程中,该字符组合被确认可以注册,则将该字符组合作为该用户的用户名。与之不同的是,在本发明的技术方案中,用户按照上述的命名规则所提出的字符组合只是作为待注册的主体用户名进行处理,如果在后续的注册过程中,该字符组合被确认可以注册,则按照预设的校验策略,为该字符组合生成校验位标识,并将该字符组合作为主体用户名,与生成的校验位标识共同组成该用户的用户名,完成注册,具体的校验位标识生成方式和处理流程在后续步骤中说明。
(2)当AAA服务器判断主体用户名可以注册时,根据预设的校验策略,为该主体用户名生成校验位标识。
本步骤所提及的校验策略是在AAA服务器中预先设定的,具体可以是一种校验算法,该校验算法的设置是为了使根据该校验算法计算出的校验位标识与主体用户名的组合具有规律性,从而便于进行后续的识别流程(识别流程相当于生成过程的逆过程),基于这样的考虑,上述校验算法优选上述的主体用户名为计算材料。
为了实现上述的识别流程,上述校验算法需要预先在接入设备中设置,或由AAA服务器向接入设备发送该校验算法,以便于接入设备根据该校验算法对用户进行合法性检查,具体的检查流程在后续步骤中详细叙述。
(3)AAA服务器保存主体用户名和校验位标识组成的用户名的注册信息,并向注册请求的注册端返回该用户名的注册信息。
本步骤的目的在于在AAA服务器中保留用户的注册信息,以便于为用户请求认证的时候提供认证依据,在现有技术中同样存在相似步骤,区别点在于现有技术只保留了密码和由用户自定义的字符组合所形成的用户名,本发明的技术方案则保留了密码和包括主体用户名和校验位标识的用户名,其中的主体用户名是由用户自定义的字符组合。
另一方面,本步骤中,AAA服务器还将上述注册信息返回给用户,这是因为最终生成的用户名不再仅仅是用户最初自定义的字符组合,而是进一步包括了AAA服务器根据用户自定义的字符组合生成的校验位标识,AAA服务器将上述两部分信息合并成为一个新的用户名返回给用户,该用户名与用户自定义的密码相对应。
步骤S302、接入设备根据预设的校验策略判断主体用户名与校验位标识是否匹配。
其中的校验策略具体可以通过以下两种方式设置:
分别在AAA服务器和接入设备中设置校验策略;或,
在AAA服务器中设置校验策略,AAA服务器将所述校验策略发送给接入设备。
在实际的应用场景中,具体采用上述哪种方式进行校验策略的设置并不影响本发明的保护范围。
在本步骤中,接入设备根据上述预先设置或由AAA服务器发送过来的校验策略,判断用户终端发送的认证请求消息中的用户名是否合法,即判断该用户名所包含的主体用户名与校验位标识是否相匹配。
当判断主体用户名与校验位标识匹配时,确认该用户名合法,转入步骤S303;
当判断主体用户名与校验位标识不匹配时,确认该用户名不合法,转入步骤S304。
步骤S303、接入设备将用户终端的认证请求消息转发给AAA服务器进行处理。
后续的处理步骤与现有技术相类似,由AAA服务器对用户名和密码进行对应关系的验证,具体的验证依据就是前述步骤中保存在AAA服务器中的用户名注册信息。
步骤S304、接入设备向用户终端发送认证终止消息或丢弃该认证请求消息。
本步骤的目的在于终止用户终端发送的认证请求消息的认证进程,其中,接入设备向用户终端发送认证终止消息的方式可以明确的告知用户终端认证失败,不能允许该认证请求消息所对应的用户上线;而接入设备直接对认证请求消息进行丢弃处理的方式则不需要向用户终端进行任何提示,用户终端在一定的响应时间过后没有收到任何的回复消息,则判定此次认证过程失败,不能允许该认证请求消息所对应的用户上线。
相比之下,接入设备向用户终端发送认证终止消息的方式可以明确的终止用户的认证进程,减少用户的认证等候时间,而接入设备直接对认证请求消息进行丢弃处理的方式则可以减少接入设备与用户终端之间的信令交互流程,节约系统资源,尤其是在系统遭到大量伪造的认证请求报文攻击的情况下,直接进行丢弃处理可以避免逐条回复认证请求消息所带来的巨大系统负担。
在实际的应用场景中,具体采用上述哪种方式进行处理并不影响本发明的保护范围。
下面,进一步结合具体的示例,对本发明的技术方案进行说明。如图4所示,以生成一个主体用户名部分为“tester”的用户名为例,本发明的技术方案具体包括以下步骤:
步骤S401、AAA服务器接收用户的注册请求。
AAA服务器接收到包含字符组合“tester”和密码的注册请求。
其中,“tester”是用户根据系统的命名规则所自定义的一个字符组合,作为待注册的主体用户名通过注册请求发送给AAA服务器,一同发送的还有用户自定义的密码,用户请求完成上述字符组合和密码相对应的用户注册流程。
步骤S402、AAA服务器根据校验策略生成校验位标识。
在本步骤之前,AAA服务器优先进行用户上报的字符组合是否符合当前系统的命名规则以及该字符组合是否已经被注册的判断,只有判断通过时,才会执行本步骤,否则,则确认认证过程失败。
具体的校验位标识生成过程是依据预先设置好的校验策略来进行的,为了方便说明,本发明给出了以下校验策略的示例:假设预先设定用三位数字来作为校验位标识,具体的校验策略规则是将主体用户名部分的每个字符所对应的ASCII码值相加,然后再加上校验位标识所对应的三位数,让最后求得的和为999。
结合前述示例,校验位标识的具体生成过程为:“tester”每个字符对应的ASCII码值分别为116、101、115、116、101和114,相加后等于663,因此,校验位标识所对应的数值为999-663=336。
这样,AAA服务器的用户信息列表中存在用户名为“tester336”的用户,即主体用户名为“tester”,校验位标识为336。而不会存在“tester001”、“tester335”或“tester337”等用户。
下面,以“tester336”用户和“tester001”用户请求AAA服务器认证的进程为例进行说明。
步骤S403、用户终端向接入设备发送包含校验位标识的认证请求消息。
当用户通过用户终端向接入设备发送认证请求消息来进行上网认证时,该认证请求消息中包含用户名和密码等信息,其中的用户名包括用户名主体部分和校验位标识部分。
如果是“tester336”用户进行认证请求,则向接入设备发送的认证请求消息中至少包括用户名主体部分“tester”、校验位标识部分“336”和相应的密码,其中,用户名主体部分“tester”和校验位标识部分“336”共同以用户名“tester336”的形式呈现。
如果是“tester001”用户进行认证请求,则向接入设备发送的认证请求消息中至少包括用户名主体部分“tester”、校验位标识部分“001”和相应的密码,其中,用户名主体部分“tester”和校验位标识部分“001”共同以用户名“tester001”的形式呈现。
步骤S404、接入设备根据校验策略判断用户终端发送的认证请求消息中的用户名是否合法,即判断用户名主体部分和校验位标识部分是否符合检验策略。
由于接入设备也会进行与AAA服务器同样的校验策略,会将用户名“tester336”或“tester001”的主体用户名部分对应ASCII码值相加,然后再加上校验位部分的数值,查看最后的和值是否为999。
对于“tester336”用户,根据校验策略计算的结果是999,所以,接入设备认为“tester336”用户是合法的,转入步骤S406;
反之,对于“tester001”用户,根据校验策略计算的结果不是999,所以,接入设备认为“tester001”用户不合法,转入步骤S405。
步骤S405、接入设备直接拒绝用户上线。
接入设备向用户终端发送拒绝认证的消息,拒绝用户上线,至此,结束该用户的认证请求进程。
在本应用场景下,用户名“tester001”的主体用户名部分对应ASCII码值相加的结果是663,加上校验位标识部分所对应的数值001,求得的和值是664,而不是999,所以,判定用户名“tester001”不合法,直接拒绝用户上线。这样就可以防止AAA服务器受到该用户“tester001”的攻击。
类似的,接入设备也可以用该校验策略来防止用户名为“tester335”、“tester337”......的用户对AAA服务器进行攻击。
步骤S406、接入设备将用户的信息发送到AAA服务器上进行认证。
接入设备将用户通过用户终端发送的认证请求信息中所包含的用户名和密码等信息发送给AAA服务器进行认证。
如果认证成功,则将用户的权限信息以认证响应报文发送给接入设备;如果认证失败,则返回认证失败的响应报文。后续的步骤S407至步骤S412的处理流程与现有技术中的步骤S203至步骤S207的处理流程相类似,在此不再重复叙述。
需要指出的是,上述校验策略并不能实现完全的过滤,例如,如果在AAA服务器的用户信息列表中不存在用户名为“dddddd399”的用户的信息,但当用户名为“dddddd399”的用户通过接入设备来进行认证时,接入设备通过校验算法计算的最后和值却为999,这时接入设备会认为用户合法,会将用户认证信息发给AAA服务器来进行认证。因此,可以看出接入设备无法对这个非法用户进行过滤,这主要是由于前面假定的校验策略是一种非常简单的算法,即使是这种简单的校验策略,也能防止一般的非法用户的简单攻击。如果采用更加复杂的校验算法,接入设备过滤非法用户的可能性将更大,AAA服务器被攻击的可能性会大大降低。
因此,在具体的应用场景中,可以根据过滤级别的需要调整上述校验策略中的具体算法内容,这样的变化,并不影响本发明的保护范围。
改进后的客户端认证方法与原有方法进行比较,主要存在以下不同:
接入设备在收到用户上线时的认证信息时,可以根据校验算法,初步判断用户名是否合法,如果合法,再去AAA服务器上认证,如果不合法,直接拒绝用户上线,以防止AAA服务器收到攻击,影响合法用户正常认证。
为了实现上述的本发明所提出的技术方案,本发明还提出了一种认证系统,如图5所示,包括至少一个用户终端51、一个接入设备52以及一个认证服务器53:
用户终端51,用于向接入设备52发送包含用户名和密码的认证请求消息,其中,用户名包括主体用户名和校验位标识;
接入设备52,用于根据预设的校验策略判断用户终端51发送的认证请求消息众多包括的主体用户名与校验位标识是否匹配,并在判断主体用户名与校验位标识匹配时,将用户终端的认证请求消息转发给认证服务器53;
认证服务器53,用于根据接入设备52转发的认证请求消息对用户名进行认证,并将认证结果通过接入设备52返回给用户终端51。
其中,在具体的应用场景中,认证服务器53,还用于接收包含主体用户名和密码的注册请求,在判断主体用户名符合注册规则,可以注册时,根据预设的校验策略,为主体用户名生成校验位标识,并保存主体用户名和校验位标识组成的用户名的注册信息,向注册请求的注册端返回用户名的注册信息。
如图6所示,上述的接入设备52具体包括:
接收模块521,用于接收用户终端51发送的包含用户名和密码的认证请求消息,用户名包括主体用户名和校验位标识;
判断模块522,与接收模块521电性连接,用于根据预设的校验策略判断接收模块521所接收的主体用户名与校验位标识是否匹配;
处理模块523,与判断模块522电性连接,用于当判断模块522判断主体用户名与校验位标识匹配时,将用户终端51的认证请求消息转发给认证服务器53进行处理。
在具体的应用场景中,处理模块523,还用于当判断模块522判断主体用户名与校验位标识不匹配时,向用户终端51发送认证终止消息,或丢弃认证请求消息。
在具体的应用场景中,接入设备52还包括:
策略模块524,与判断模块522电性连接,用于预先设置校验策略,或接收认证服务器53发送的校验策略。
另一方面,如图7所示,上述的认证服务器53具体包括:
注册模块531,用于接收包含主体用户名和密码的注册请求;
识别模块532,与注册模块531电性连接,用于判断主体用户名是否符合注册规则;
生成模块533,与识别模块532电性连接,用于在识别模块532判断主体用户名符合注册规则,可以注册时,根据预设的校验策略,为主体用户名生成校验位标识;
存储模块534,与生成模块533电性连接,用于保存主体用户名和生成模块533所生成的校验位标识组成的用户名的注册信息,并向注册请求的注册端返回用户名的注册信息。
在具体的应用场景中,认证服务器53还包括:
策略模块535,与生成模块533电性连接,用于预先设置校验策略,或将校验策略发送给接入设备52。
通过本发明,接入设备52在收到用户上线时的认证信息时,可以根据校验算法,初步判断用户名是否合法,如果合法,再去认证服务器53上认证,如果不合法,直接拒绝用户上线,以防止认证服务器53收到攻击,影响合法用户正常认证。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。