Получение пакета без ответа из-за ошибки: получен пакет от (ip) с недействительным аутентификатором сообщения! (Общий сеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получение пакета без ответа из-за ошибки: получен пакет от (ip) с недействительным аутентификатором сообщения! (Общий се

Сообщение Anonymous »

при отправке запроса Radius с атрибутом Message-Authenticator пакет отбрасывается без ответа из-за ошибки: получен пакет от 172.21.248.41 с недействительным Message-Authenticator! (Общий секретный ключ неверен.) (с локального хоста клиента) получение со стороны сервера, хотя общий секрет правильный. Использование jar tinyradius-1.1.3.
Установлен freeradius в одном из экземпляров ( например: 10.255.68.68)
Вот пример программы

Код: Выделить всё

package test;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.tinyradius.attribute.RadiusAttribute;
import org.tinyradius.packet.AccessRequest;
import org.tinyradius.packet.RadiusPacket;`your text`
import org.tinyradius.util.RadiusClient;

public class RadiusAuthenticatorClient {

public static void main(String[] args) throws Exception {
String server = "";
String sharedSecret = "";
RadiusClient client = new RadiusClient(server, sharedSecret);
client.setAuthPort(1812);  // Set to your RADIUS authentication port

// Example: Username and password
String username = "admin";
String password = "password1";

// Create and send the Access-Request packet
AccessRequest accessRequest = new AccessRequest(username, password);

SecureRandom random = new SecureRandom();
byte[] requestAuthenticator = new byte[16];
random.nextBytes(requestAuthenticator);
accessRequest.setAuthenticator(requestAuthenticator);
addMessageAuthenticator(accessRequest, client, sharedSecret);

RadiusPacket response = client.authenticate(accessRequest);

}

public static void addMessageAuthenticator(AccessRequest accessRequest, RadiusClient client, String sharedSecret) throws Exception {
// Create a 16-byte authenticator (MD5 HMAC of the shared secret)

byte[] messageAuthenticator = new byte[16];

// Generate the HMAC MD5 hash
Mac mac = Mac.getInstance("HmacMD5");
SecretKeySpec keySpec = new SecretKeySpec(sharedSecret.getBytes("UTF-8"), "HmacMD5");
mac.init(keySpec);

byte[] packetBytes = createPacketBytes(accessRequest);

mac.update(packetBytes);
mac.update(new byte[16]); // Zeroed-out Message-Authenticator placeholder
messageAuthenticator = mac.doFinal();

// Add updated Message-Authenticator to the request
RadiusAttribute messageAuthenticatorAttr = new RadiusAttribute(80, messageAuthenticator);
accessRequest.addAttribute(messageAuthenticatorAttr);
}

public static byte[] createPacketBytes(AccessRequest accessRequest) throws IOException {

List attributes = accessRequest.getAttributes();
ByteArrayOutputStream bos = new ByteArrayOutputStream(4096);
for (Iterator i = attributes.iterator(); i.hasNext();) {
RadiusAttribute a = (RadiusAttribute) i.next();
bos.write(a.writeAttribute());
}
bos.flush();
byte[] attrs = bos.toByteArray();
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.writeByte(accessRequest.getPacketType());
dos.writeByte(accessRequest.getPacketIdentifier());
dos.writeShort(20+attrs.length);
dos.write(accessRequest.getAuthenticator());
dos.write(attrs);
dos.flush();
return out.toByteArray();
}
}
Неправильный ли расчет проверки подлинности сообщений или мне нужно что-то настроить на стороне сервера или клиента?
Общий секрет настроен как «testing123» в Радиус-сервер.
Может ли кто-нибудь помочь мне в вычислении и добавлении аутентификатора сообщения в запрос, с помощью которого я могу получить правильный ответ (Принять-Принять или Принять-Отклонить).

Подробнее здесь: https://stackoverflow.com/questions/791 ... acket-from
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»