身份验证
Relay 使用多层身份验证来支持服务之间的安全通信:
UAS 身份验证
UAS 身份验证基于 HTTP,并且与分配服务和其他 Unity 服务进行通信,例如 Lobby。
在请求分配前,游戏客户端必须使用 UAS 获取访问令牌,然后将访问令牌传递到分配请求的授权标头中。
> 注意:请参阅 Relay 与 UTP、以及。
Relay BIND
消息身份验证
Relay 身份验证使用 HMAC 签名对玩家进行身份验证。安全签名使用密钥和随机数值。
HMAC 和共享密钥
HMAC(基于哈希的消息身份验证代码)是使用密码散列函数和键对消息进行身份验证的消息身份验证代码。Relay 使用 Relay 服务器生成的共享密钥来为具有连接数据和递增随机数的 HMAC 签名。
如果客户端的 IP 地址或端口号更改,则提供的随机数必须大于上一个已知的值(即上一个随机数),以缓解重放攻击。不过,如果通过同一 IP 地址和端口号重新绑定,则客户端不需要增大随机数。
DTLS 身份验证
DTLS 身份验证使用预共享密钥 (PSK),其值等于 BIND
消息身份验证中使用的 HMAC 密钥。DTLS 握手中的 PSK 提示等同于分配 ID。请参阅 DTLS 加密。