本发明涉及网络认证技术领域,尤其涉及一种基于802.1X协议的Windows局域网身份认证方法。
背景技术:
802.1X作为一种开放的认证协议,在实际应用中各个实现方案都或多或少的扩展这个协议来满足自己的要求。其次,各种方案在Windows平台下的实现方案都不具备简单易用的特点。针对现在市面上常见的认证客户端的实现缺点总结如下:
过分扩展协议,一些客户端为了阻止用户使用其他客户端来进行身份认证,在标准协议之外扩展了自己的附加字段,导致用户不能使用其他客户端进行身份认证。
兼容性差,由于Windows平台的特性限制,基于底层网络协议的软件都必须利用驱动程序来完成,但是市面上的客户端在实现这种驱动的时候都采用自己技术,但是这种实现方案并不完美。经常造成客户端无响应或者导致用户电脑蓝屏。
网络类型支持不完善,在某些网络环境下,网络不支持802.1X的标准广播包,这就造成一部分的认证客户端无法正常发起身份认证请求。
多网卡支持,由于用户电脑上可能出现多张网卡,这个时候会造成某些拨号软件无法正确打开有效的网络适配器;另一些常见的方式是让用户选择网卡,但是针对普通用户来说,这并不是一个完美的解决方案,因为普通用户根本就不了解这些专业的名词。
无法断线重连,在实际的使用过程中,常见的认证客户端无法在系统休眠再启动或者网卡被禁用或启用的情况下,再次自动发起重新认证的流程。
因此,本领域的技术人员亟需研究出一种使用最低的资源需求即可完成高效、稳定、自动化的局域网身份认证、不必扩展自定义字段与标准的认证服务就可实现正常兼容,无需任何修改即可完整认证匹配、兼容性好、降低了用户的使用难度,可在异常的情况下自动在发起认证的基于802.1X协议的Windows局域网身份认证方法。
技术实现要素:
本发明要解决的技术问题是提供一种基于802.1X协议的Windows局域网身份认证方法,该基于802.1X协议的Windows局域网身份认证方法使用最低的资源需求即可完成高效、稳定、自动化的局域网身份认证、不必扩展自定义字段与标准的认证服务就可实现正常兼容,无需任何修改即可完整认证匹配、兼容性好、降低了用户的使用难度,可在异常的情况下自动在发起认证。
为解决上述技术问题,本发明提供了一种基于802.1X协议的Windows局域网身份认证方法,其特征在于:提供客户端、设备端及认证服务器,所述客户端包括数据接收模块、认证模块、数据类型判断模块、数据请求类型判断模块、响应数据处理模块、请求数据处理模块、网络重连模块及登录判断模块,所述设备端包括网卡判断模块及网卡自动选择模块,
所述基于802.1X协议的Windows局域网身份认证方法包括以下步骤:
S1:用户启动所述客户端发起802.1X认证,所述设备端通过底层数据包收发对与所述设备端连接的客户端进行认证,通过所述认证服务器对所述设备端的用户进行认证、授权和计费;
S2:所述网卡判断模块通过所述信息列举函数列举客户端上的所有网卡,获取所有网卡基本信息并将其保存,所述网卡判断模块对所述网卡的数据进判断并将判断后的网卡数据发送给所述网卡自动选择模块,所述网卡自动选择模块根据所述网卡数据对所述物理网卡进行自动选择;
S3:所述客户端监控所述客户端与所述设备端连接的系统状态,当达到恢复状态时,所述客户端启动与所述设备端重新连接的机制,与所述设备端重新连接;
所述步骤S1的步骤“底层数据包收发”的实现步骤包括:
S1a:所述认证模块发送第一次认证开始帧,判断认证开始帧发送是否超时,如果是,则执行步骤S1c,如果否,则执行步骤S1b;
S1b:所述数据接收模块等待接收数据包,并将所接收的数据包发送给所述数据类型判断模块;
S1c:所述认证模块发送第二次认证开始帧,判断认证开始帧发送是否超时,如果是,则结束流程,如果否,则返回所述步骤S1b;
S1d:所述数据类型判断模块判断所接收的数据包的类型,如果是响应数据包,则将所述响应数据包发送给所述响应数据处理模块,如果是请求数据包,则将所述请求数据包发送给所述请求数据处理模块;
S1e:所述请求数据处理模块将请求数据包发送给所述数据请求类型判断模块,所述响应数据处理模块将响应数据包发送所述登录判断模块,所述数据请求类型判断模块将所述请求数据包的数据判断后进行认证分类并将认证分类的信息发送给所述登录判断模块;
S1f:所述登录判断模块对所设备端的登录状态进行判断,如果登录不成功,则结束流程,如果登录成功,则所述客户端与所述设备连接成功;
其中,所述设备端为支持802.1X协议的网络设备,所述认证服务器是为设备端提供认证服务的实体;
其中,所述底层数据包收发的编程接口为WinPcap网络驱动程序。
优选地,所述客户端支持可扩展认证协议EAPOL,
所述设备端为客户端提供接入局域网的端口,该端口是物理端口或者逻辑端口。
优选地,所述信息列举函数为GetAdaptersAddresses函数。
优选地,所述网卡基本信息为网卡GUID、网卡设备名称、网卡详细名称、网卡MAC地址及网卡设备类型。
优选地,所述认证分类包括发送用户名、发送密码及响应心跳。
优选地,所述步骤S3的步骤“所述网卡判断模块对所述网卡的数据进判断并将判断后的网卡数据发送给所述网卡自动选择模块”的实现步骤包括:所述网卡判断模块通过查询对应系统注册表路径下对应网卡名称的一个键,判断所述键下面的子健“Connection”的开头类型,如果所述子健的键值是以“PCI”开头,则判断所述物理网卡是否为一张,如果为一张,则所述网卡自动选择模块对所述物理网卡进行选择,如果所述子健的键值不是以“PCI”开头,则结束流程。
优选地,所述网络重连模块包括网络变化判断单元、数据获取接收单元、状态判断单元及重新认证与连接恢复单元,所述步骤S4的实现步骤包括:
S401:所述网络变化判断单元根据NotifyAddrChange函数判断客户端与设备端连接的网络是否发生变化,如果所述网络发生变化,则执行步骤S402,否则,结束流程;
S402:所述网络变化判断单元将所述网络变化的消息发送给所述数据获取接收单元;
S403:所述数据获取接收单元获取所述客户端与所述设备端连接状态信息,所述数据获取接收单元利用INetConnectionManager函数获取所述客户端网卡管理员的状态信息,所述数据获取接收单元将获取的信息发送给所述状态判断单元;
S404:所述状态判断单元判断所述设备端连接状态信息及所述设备端管理员的状态信息是否一致,如果一致,则返回步骤S401,如果不一致则所述状态判断单元将判断结果的信息发送给所述重新认证与连接恢复单元并执行步骤S405;
S405:所述重新认证与连接恢复单元将所述客户端与所述设备的网络重新认证及连接。
优选地,所述认证服务器为Raduis认证服务器,所述Raduis认证服务器的认证方式为EAPOL-Md5。
优选地,还提供DHCP服务器,当所述客户端与所述设备端的网络连接认证成功之后,所述客户端自动向所述DHCP服务器请求可用的IP地址。
优选地,所述步骤S1的实现步骤包括:
S101:当用户有访问网络需求时,打开所述客户端,输入已经申请、登记过的用户名和密码,发起连接请求EAPOL-Start报文,所述客户端将发出请求认证的报文发送给所述设备端;
S102:所述设备端接收请求认证的数据帧,发出一个EAP-Request/Identity请求帧请求所述客户端发送输入的用户名;
S103:所述客户端响应设备端发出的请求,将用户名信息通过EAP-Response/Identity数据帧发送给所述设备端,所述设备端将所述客户端发送的数据帧封包处理成RADIUS Access-Request报文,将所述RADIUS Access-Request报文发送给认证服务器进行处理,所述认证服务器接收所述设备端转发的用户名信息,将该信息与数据库中的用户名表对比,找到该用户名对应的密码信息,随机生成的一个加密字对用户名信息进行加密处理,所述认证服务器将所述加密字通过RADIUS Access-Challenge报文发送给所述设备端,所述设备端将所述加密字信息转发给所述客户端;
S104:所述客户端接收到所述设备端发送的加密字,用该加密字对密码部分进行加密处理,生成EAP-Response/MD5Challenge报文,并通过所述设备端发送给所述认证服务器;
S105:所述认证服务器将收到的已加密的RADIUS Access-Request密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,发送认证通过的EAP-Success消息给所述设备端;
S106:所述设备端接收认证通过消息后将为所述客户端提供接入局域网的端口改为授权状态,允许用户通过端口访问网络,所述设备端通过向客户端定期发送握手报文,对用户的在线情况进行监测,在缺省情况下,如果两次握手请求报文都得不到客户端应答,所述设备端让用户下线;
S107:所述客户端发送EAPOL-Logoff报文给设备端,主动要求下线,所述设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。
采用了上述方法之后,用户启动所述客户端发起802.1X认证,所述设备端通过底层数据包收发对与所述设备端连接的客户端进行认证,通过所述认证服务器对所述设备端的用户进行认证、授权和计费;所述网卡判断模块通过所述信息列举函数列举客户端上的所有网卡,获取所有网卡基本信息并将其保存,所述网卡判断模块对所述网卡的数据进判断并将判断后的网卡数据发送给所述网卡自动选择模块,所述网卡自动选择模块根据所述网卡数据对所述物理网卡进行自动选择;所述客户端监控所述客户端与所述设备端连接的系统状态,当达到恢复状态时,所述客户端启动与所述设备端重新连接的机制,与所述设备端重新连接;所述认证模块发送第一次认证开始帧,判断认证开始帧发送是否超时,如果是,所述认证模块发送第二次认证开始帧,判断认证开始帧发送是否超时,如果否,则所述数据接收模块等待接收数据包,并将所接收的数据包发送给所述数据类型判断模块;所述数据类型判断模块判断所接收的数据包的类型,如果是响应数据包,则将所述响应数据包发送给所述响应数据处理模块,如果是请求数据包,则将所述请求数据包发送给所述请求数据处理模块;
所述请求数据处理模块将请求数据包发送给所述数据请求类型判断模块,所述响应数据处理模块将响应数据包发送所述登录判断模块,所述数据请求类型判断模块将所述请求数据包的数据判断后进行认证分类并将认证分类的信息发送给所述登录判断模块;所述登录判断模块对所设备端的登录状态进行判断,如果登录不成功,则结束流程,如果登录成功,则所述客户端与所述设备连接成功;该基于802.1X协议的Windows局域网身份认证方法使用最低的资源需求即可完成高效、稳定、自动化的局域网身份认证、不必扩展自定义字段与标准的认证服务就可实现正常兼容,无需任何修改即可完整认证匹配、兼容性好、降低了用户的使用难度,可在异常的情况下自动在发起认证。
附图说明
图1是本发明的一种基于802.1X协议的Windows局域网身份认证方法的整体模型示意图;
图2是本发明的一种基于802.1X协议的Windows局域网身份认证方法的执行流程示意图;
图3是本发明的一种基于802.1X协议的Windows局域网身份认证方法的认证步骤的执行流程示意图;
图4是与图3的认证步骤执行流程图对应的认证过程模型图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
实施例1
请参阅图1至图3,图1是本发明的一种基于802.1X协议的Windows局域网身份认证方法的整体模型示意图;图2是本发明的一种基于802.1X协议的Windows局域网身份认证方法的执行流程示意图;图3是本发明的一种基于802.1X协议的Windows局域网身份认证方法的认证步骤的执行流程示意图。
本发明公开了一种基于802.1X协议的Windows局域网身份认证方法,提供客户端、设备端及认证服务器,所述客户端包括数据接收模块、认证模块、数据类型判断模块、数据请求类型判断模块、响应数据处理模块、请求数据处理模块、网络重连模块及登录判断模块,所述设备端包括网卡判断模块及网卡自动选择模块,所述基于802.1X协议的Windows局域网身份认证方法包括以下步骤:
S1:用户启动所述客户端发起802.1X认证,所述设备端通过底层数据包收发对与所述设备端连接的客户端进行认证,通过所述认证服务器对所述设备端的用户进行认证、授权和计费;
S2:所述网卡判断模块通过所述信息列举函数列举客户端上的所有网卡,获取所有网卡基本信息并将其保存,所述网卡判断模块对所述网卡的数据进判断并将判断后的网卡数据发送给所述网卡自动选择模块,所述网卡自动选择模块根据所述网卡数据对所述物理网卡进行自动选择;
S3:所述客户端监控所述客户端与所述设备端连接的系统状态,当达到恢复状态时,所述客户端启动与所述设备端重新连接的机制,与所述设备端重新连接;
所述步骤S1的实现步骤包括:
S101:当用户有访问网络需求时,打开所述客户端,输入已经申请、登记过的用户名和密码,发起连接请求EAPOL-Start报文,所述客户端将发出请求认证的报文发送给所述设备端;
S102:所述设备端接收请求认证的数据帧,发出一个EAP-Request/Identity请求帧请求所述客户端发送输入的用户名;
S103:所述客户端响应设备端发出的请求,将用户名信息通过EAP-Response/Identity数据帧发送给所述设备端,所述设备端将所述客户端发送的数据帧封包处理成RADIUS Access-Request报文,将所述RADIUS Access-Request报文发送给认证服务器进行处理,所述认证服务器接收所述设备端转发的用户名信息,将该信息与数据库中的用户名表对比,找到该用户名对应的密码信息,随机生成的一个加密字对用户名信息进行加密处理,所述认证服务器将所述加密字通过RADIUS Access-Challenge报文发送给所述设备端,所述设备端将所述加密字信息转发给所述客户端;
S104:所述客户端接收到所述设备端发送的加密字,用该加密字对密码部分进行加密处理,生成EAP-Response/MD5Challenge报文,并通过所述设备端发送给所述认证服务器;
S105:所述认证服务器将收到的已加密的RADIUS Access-Request密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,发送认证通过的EAP-Success消息给所述设备端;
S106:所述设备端接收认证通过消息后将为所述客户端提供接入局域网的端口改为授权状态,允许用户通过端口访问网络,所述设备端通过向客户端定期发送握手报文,对用户的在线情况进行监测,在缺省情况下,如果两次握手请求报文都得不到客户端应答,所述设备端让用户下线;
S107:所述客户端发送EAPOL-Logoff报文给设备端,主动要求下线,所述设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。
其中,所述设备端为支持802.1X协议的网络设备,所述认证服务器是为设备端提供认证服务的实体;
其中,所述网卡基本信息为网卡GUID、网卡设备名称、网卡详细名称、网卡MAC地址及网卡设备类型。
其中,所述认证分类包括发送用户名、发送密码及响应心跳。
其中,所述底层数据包收发的编程接口为WinPcap网络驱动程序。
所述步骤S1的步骤“底层数据包收发”的实现步骤包括:
S1a:所述认证模块发送第一次认证开始帧,判断认证开始帧发送是否超时,如果是,则执行步骤S1c,如果否,则执行步骤S1b;
S1b:所述数据接收模块等待接收数据包,并将所接收的数据包发送给所述数据类型判断模块;
S1c:所述认证模块发送第二次认证开始帧,判断认证开始帧发送是否超时,如果是,则结束流程,如果否,则返回所述步骤S1b;
S1d:所述数据类型判断模块判断所接收的数据包的类型,如果是响应数据包,则将所述响应数据包发送给所述响应数据处理模块,如果是请求数据包,则将所述请求数据包发送给所述请求数据处理模块;
S1e:所述请求数据处理模块将请求数据包发送给所述数据请求类型判断模块,所述响应数据处理模块将响应数据包发送所述登录判断模块,所述数据请求类型判断模块将所述请求数据包的数据判断后进行认证分类并将认证分类的信息发送给所述登录判断模块;
S1f:所述登录判断模块对所设备端的登录状态进行判断,如果登录不成功,则结束流程,如果登录成功,则所述客户端与所述设备连接成功。
在本实施例,所述客户端支持可扩展认证协议EAPOL,所述设备端为客户端提供接入局域网的端口,该端口是物理端口或者逻辑端口。
在本实施例,优选的所述信息列举函数为GetAdaptersAddresses函数,所述信息列举函数也可以为其他类型的函数。
所述步骤S3的步骤“所述网卡判断模块对所述网卡的数据进判断并将判断后的网卡数据发送给所述网卡自动选择模块”的实现步骤包括:所述网卡判断模块通过查询对应系统注册表路径下对应网卡名称的一个键,判断所述键下面的子健“Connection”的开头类型,如果所述子健的键值是以“PCI”开头,则判断所述物理网卡是否为一张,如果为一张,则所述网卡自动选择模块对所述物理网卡进行选择,如果所述子健的键值不是以“PCI”开头,则结束流程。
所述网络重连模块包括网络变化判断单元、数据获取接收单元、状态判断单元及重新认证与连接恢复单元,所述步骤S4的实现步骤包括:
S401:所述网络变化判断单元根据NotifyAddrChange函数判断客户端与设备端连接的网络是否发生变化,如果所述网络发生变化,则执行步骤S402,否则,结束流程;
S402:所述网络变化判断单元将所述网络变化的消息发送给所述数据获取接收单元;
S403:所述数据获取接收单元获取所述客户端与所述设备端连接状态信息,所述数据获取接收单元利用INetConnectionManager函数获取所述客户端网卡管理员的状态信息,所述数据获取接收单元将获取的信息发送给所述状态判断单元;
S404:所述状态判断单元判断所述设备端连接状态信息及所述设备端管理员的状态信息是否一致,如果一致,则返回步骤S401,如果不一致则所述状态判断单元将判断结果的信息发送给所述重新认证与连接恢复单元并执行步骤S405;
S405:所述重新认证与连接恢复单元将所述客户端与所述设备的网络重新认证及连接。
在本实施例,所述认证服务器为Raduis认证服务器,所述Raduis认证服务器的认证方式为EAPOL-Md5。
还提供DHCP服务器,当所述客户端与所述设备端的网络连接认证成功之后,所述客户端自动向所述DHCP服务器请求可用的IP地址。
采用了上述方法之后,用户启动所述客户端发起802.1X认证,所述设备端通过底层数据包收发对与所述设备端连接的客户端进行认证,通过所述认证服务器对所述设备端的用户进行认证、授权和计费;所述网卡判断模块通过所述信息列举函数列举客户端上的所有网卡,获取所有网卡基本信息并将其保存,所述网卡判断模块对所述网卡的数据进判断并将判断后的网卡数据发送给所述网卡自动选择模块,所述网卡自动选择模块根据所述网卡数据对所述物理网卡进行自动选择;所述客户端监控所述客户端与所述设备端连接的系统状态,当达到恢复状态时,所述客户端启动与所述设备端重新连接的机制,与所述设备端重新连接;所述认证模块发送第一次认证开始帧,判断认证开始帧发送是否超时,如果是,所述认证模块发送第二次认证开始帧,判断认证开始帧发送是否超时,如果否,则所述数据接收模块等待接收数据包,并将所接收的数据包发送给所述数据类型判断模块;所述数据类型判断模块判断所接收的数据包的类型,如果是响应数据包,则将所述响应数据包发送给所述响应数据处理模块,如果是请求数据包,则将所述请求数据包发送给所述请求数据处理模块;所述请求数据处理模块将请求数据包发送给所述数据请求类型判断模块,所述响应数据处理模块将响应数据包发送所述登录判断模块,所述数据请求类型判断模块将所述请求数据包的数据判断后进行认证分类并将认证分类的信息发送给所述登录判断模块;所述登录判断模块对所设备端的登录状态进行判断,如果登录不成功,则结束流程,如果登录成功,则所述客户端与所述设备连接成功;该基于802.1X协议的Windows局域网身份认证方法使用最低的资源需求即可完成高效、稳定、自动化的局域网身份认证、不必扩展自定义字段与标准的认证服务就可实现正常兼容,无需任何修改即可完整认证匹配、兼容性好、降低了用户的使用难度,可在异常的情况下自动在发起认证。
同时,应当理解的是,以上仅为本发明的优选实施例,不能因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效实现方法,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。