通常、TURN サーバーは TURN リクエストには認証あり、STUN リクエストには認証なしで設定されます。
sgcWebSockets TURN サーバーは長期資格情報をサポートしているため、TsgcTURNServer を構成して長期資格情報情報を持つリクエストのみを許可することができます。
設定するには、TURNOptions.Authorization プロパティにアクセスして有効にします。
次に LongTermCredentials プロパティにアクセスして有効にします。デフォルトでは、この種類の認証は Realm 文字列がすでに設定されており、デフォルトの StaleNonce 値は10分(600秒)です。
oTURN := TsgcTURNServer.Create(nil);
oTURN.Port := 3478;
oTURN.STUNOptions.Authentication.Enabled := False;
oTURN.TURNOptions.Authentication.Enabled := True;
oTURN.TURNOptions.Authentication.LongTermCredentials.Enabled := True;
oTURN.TURNOptions.Authentication.LongTermCredentials.Realm := 'sgcWebSockets';
oTURN.TURNOptions.Authentication.LongTermCredentials.StaleNonce := 600;
oTURN.Active := True;
procedure OnSTUNRequestAuthorization(Sender: TObject; const aRequest: TsgcSTUN_Message;
const aUsername, aRealm: string; var Password: string);
begin
if (aUsername = 'my-user') and (aRealm = 'sgcWebSockets') then
Password := 'my-password';
end;