通常 STUN 服务器不配置身份验证,因此任何 STUN 客户端均可发送绑定请求,并期望在无需身份验证的情况下收到服务器响应。
sgcWebSockets STUN 服务器支持长期凭据,您可以配置 TsgcSTUNServer 使其只允许携带长期凭据信息的绑定请求。
要配置此功能,请访问 STUNOptions.Authorization 属性并启用它。
然后访问 LongTermCredentials 属性并启用它。默认情况下,此授权类型已配置了 Realm 字符串,并将默认 StaleNonce 值设为 10 分钟(= 600 秒)。
oSTUN := TsgcSTUNServer.Create(nil);
oSTUN.Port := 3478;
oSTUN.STUNOptions.Authentication.Enabled := True;
oSTUN.STUNOptions.Authentication.LongTermCredentials.Enabled := True;
oSTUN.STUNOptions.Authentication.LongTermCredentials.Realm := 'sgcWebSockets';
oSTUN.STUNOptions.Authentication.LongTermCredentials.StaleNonce := 600;
oSTUN.Active := True;
procedure OnSTUNRequestAuthorization(Sender: TObject; const aRequest: TsgcSTUN_Message;
const aUsername, aRealm: string; var Password: string);
begin
if aUsername = 'my-user' then
Password := 'my-password';
end;