通常、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;