一种基于UDP代理协议的用户认证方法与流程

文档序号:26548025发布日期:2021-09-07 23:52阅读:372来源:国知局
一种基于udp代理协议的用户认证方法
技术领域
1.本发明涉及用户认证应用领域,具体涉及一种基于udp代理协议的用户认证方法。


背景技术:

2.在基于udp协议的网络应用中,如在线游戏,实时音视频等领域,udp的认证协议可根据具体业务需要进行设计,通常是在连接建立的起始进行用户认证。然而在基于udp协议的网络代理技术中,被代理的应用使用的udp协议不可预知,无法对他们进行协议适配,以保证协议的透明。而现阶段的认证方法存在发送延迟较大,不利于业务扩展或者对服务器处理能力要求较高的问题。
3.公开于该背景技术部分的信息仅仅旨在加深对本发明的总体背景技术的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。


技术实现要素:

4.为解决上述技术问题,本发明提出了一种基于udp代理协议的用户认证方法,以达到降低udp的开销和降低对服务器的处理压力的目的。
5.为达到上述目的,本发明的技术方案如下:
6.一种基于udp代理协议的用户认证方法,其步骤具体如下:
7.(1)、客户端认证:
8.(1

1)、开启新连接,置连接的状态为pending_auth;
9.(1

2)、开启一个认证线程;
10.(1

3)、若连接的状态为auth_fail,则关闭连接,结束过程;
11.(1

4)、接收数据;
12.(1

5)、将发送至服务端,返回步骤3;
13.(2)、服务端认证:
14.(2

1)、开启udp监听,维护一张<源ip:源端口>到<认证状态s,创建时间t>的映射表z;
15.(2

2)、接收数据;
16.(2

3)、根据源ip:源端口查询z,若不存在值,则创建新的映射关系,源 ip:源端口

>auth_pending(等待认证)和当前时间t,开启认证线程;
17.(2

4)、若认证状态s为auth_pending,且t与当前时间相差10秒以上;则置认证状态s为auth_failed,关闭认证线程;
18.(2

5)、若认证状态s为auth_failed,则返回步骤(2

2);
19.(2

6)、取出数据;
20.(2

7)、若地址类型&0x8f=0x80,将数据交由认证线程处理,否则处理代理流程。
21.作为优选的,步骤(1

2)具体如下:
22.(1
‑2‑
1)、构造表2的数据结构,其中地址类型为0x80,cmd为auth_req, id为随机
生成的16位随机整数,token为预先从服务端获得的数据;
23.(1
‑2‑
2)、发送至服务端;
24.(1
‑2‑
3)、接收数据;
25.(1
‑2‑
4)、若在1s内未接收到数据,则返回步骤(1
‑2‑
1),id保持不变;
26.(1
‑2‑
5)、比较接收到的数据的id是否与步骤1中的id相等,否则返回步骤(1
‑2‑
3);
27.(1
‑2‑
6)、如果接收数据的cmd为auth_ok,则置连接的状态为auth_ok;如果接收数据的cmd为auth_fail,则置连接的状态为auth_fail;
28.(1
‑2‑
7)、构造数据结构,;
29.(1
‑2‑
8)、发送此数据,并关闭认证线程。
30.作为优选的,步骤(2

3)具体如下:
31.(2
‑3‑
1)、接收主线程传递的数据,并解析;
32.(2
‑3‑
2)、若cmd为auth_req,记录id,根据token中的签名,使用rsa 的pss模式对uuid和过期时间组成的20字节进行验证。若验证通过,则置认证状态s为auth_ok,否则置auth_failed;
33.(2
‑3‑
3)、构造数据结构,,发送至客户端;
34.(2
‑3‑
4)、接收主线程传递的数据;
35.(2
‑3‑
5)、若1s内未接收到数据,则返回步骤(2
‑3‑
3);
36.(2
‑3‑
6)、接收到数据,若cmd为auth_ack,且id为步骤2中记录的id,则关闭认证线程,否则返回步骤(2
‑3‑
4)。
37.本发明具有如下优点:
38.本发明所提供的认证方法并不会造成udp的首包延迟,因此并不会造成udp 端口的增加,达到降低udp的开销和降低对服务器的处理压力的目的。
具体实施方式
39.下面对本发明实施例中的技术方案进行清楚、完整地描述。
40.下面结合实施例和具体实施方式对本发明作进一步详细的说明。
41.一种基于udp代理协议的用户认证方法,其步骤具体如下:
42.(1)、客户端认证:
43.(1

1)、开启新连接,置连接的状态为pending_auth;
44.(1

2)、开启一个认证线程,具体如下:
45.(1
‑2‑
1)、构造表1的数据结构,其中地址类型为0x80,cmd为auth_req, id为随机生成的16位随机整数,token为预先从服务端获得的数据;
46.表1如下:
47.地址类型(1字节)cmd(1字节)id(2字节)token(52字节)
48.并且:token结构如下
49.uuid(16字节)过期时间(4字节)签名(32字节)
50.其中,cmd表示控制命令,可能的值有:
51.1:auth_req,请求认证;
52.20:auth_ok,认证通过;
53.40:auth_fail,认证失败;
54.100:auth_ack,确认收到认证回复;
55.uuid表示用户id;
56.(1
‑2‑
2)、发送至服务端;
57.(1
‑2‑
3)、接收数据;
58.(1
‑2‑
4)、若在1s内未接收到数据,则返回步骤(1
‑2‑
1),id保持不变;
59.(1
‑2‑
5)、比较接收到的数据的id是否与步骤1中的id相等,否则返回步骤(1
‑2‑
3);
60.(1
‑2‑
6)、如果接收数据的cmd为auth_ok,则置连接的状态为auth_ok;如果接收数据的cmd为auth_fail,则置连接的状态为auth_fail;
61.(1
‑2‑
7)、构造如表1的数据结构,其中地址类型为0x80,cmd为auth_ack, id为步骤1生成的id,token为空值;
62.(1
‑2‑
8)、发送此数据,并关闭认证线程。
63.(1

3)、若连接的状态为auth_fail,则关闭连接,结束过程;
64.(1

4)、接收数据;
65.(1

5)、构造如表2的数据结构,将发送至服务端,返回步骤3;
66.表2如下:
67.地址类型(1字节)目标地址(可变长度)目标端口(2字节)负载
68.地址类型有3个可选值:
69.1:表示目标地址是一个ipv4地址
70.3:表示目标地址是一个域名
71.4:表示目标地址是一个ipv6地址
72.在此过程中,需要对认证包和数据包做区分,由于地址类型占用一字节,而 1、3、4三个值只利用到1字节中的低4位。为了不扩大包大小,本专利利用地址类型的高4位做认证包标识,具体如下:
73.地址类型(1字节)cmd(1字节)id(2字节)token(52字节)
74.(2)、服务端认证:
75.(2

1)、开启udp监听,维护一张<源ip:源端口>到<认证状态s,创建时间 t>的映射表z;
76.(2

2)、接收数据;
77.(2

3)、根据源ip:源端口查询z,若不存在值,则创建新的映射关系,源 ip:源端口

>auth_pending(等待认证)和当前时间t,开启认证线程,具体如下:
78.(2
‑3‑
1)、接收主线程传递的数据,并解析;
79.(2
‑3‑
2)、若cmd为auth_req,记录id,根据token中的签名,使用rsa 的pss模式对uuid和过期时间组成的20字节进行验证。若验证通过,则置认证状态s为auth_ok,否则置auth_failed;
80.(2
‑3‑
3)、构造如表1的数据结构,其中cmd为认证状态s当前的值,id 为步骤(2
‑3‑
2)中记录的id,发送至客户端;
81.(2
‑3‑
4)、接收主线程传递的数据;
82.(2
‑3‑
5)、若1s内未接收到数据,则返回步骤(2
‑3‑
3);
83.(2
‑3‑
6)、接收到数据,若cmd为auth_ack,且id为步骤2中记录的id,则关闭认证线程,否则返回步骤(2
‑3‑
4)。
84.(2

4)、若认证状态s为auth_pending,且t与当前时间相差10秒以上;则置认证状态s为auth_failed,关闭认证线程;
85.(2

5)、若认证状态s为auth_failed,则返回步骤(2

2);
86.(2

6)、取出数据;
87.(2

7)、若地址类型&0x8f=0x80,将数据交由认证线程处理,否则处理代理流程。
88.通过以上的方式,本发明所提供的一种基于udp代理协议的用户认证方法,其并不会造成udp的首包延迟,因此并不会造成udp端口的增加,达到降低 udp的开销和降低对服务器的处理压力的目的。
89.以上所述的仅是本发明所公开的一种基于udp代理协议的用户认证方法的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1