#java #api #duosecurity
Вопрос:
Кто-нибудь может помочь мне с этой ошибкой, с которой я сталкиваюсь? Я довольно новичок в java. Здесь я пытаюсь создать пользователя в API администратора, но когда я запускаю этот код, я получаю следующее
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;
// HTTP basic authentication example in Java using the RTC Server RESTful API
public class Untitled {
public static void main(String[] args) throws IOException, InterruptedException {
// Customer ID
final String customerKey = "key";
// Customer secret
final String customerSecret = "secret";
// Concatenate customer key and customer secret and use base64 to encode the
// concatenated string
String plainCredentials = customerKey ":" customerSecret;
String base64Credentials = new String(Base64.getEncoder().encode(plainCredentials.getBytes()));
// Create authorization header
String authorizationHeader = "Basic " base64Credentials;
HttpClient client = HttpClient.newHttpClient();
// Create HTTP request object
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api-e9770554.duosecurity.com/admin/v1/users")).GET()
.header("Authorization", authorizationHeader).header("Content-Type", "application/json").build();
// Send HTTP request
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
ошибка
{"code": 40104, "message": "Missing request timestamp", "stat": "FAIL"}
Ответ №1:
Это не имеет ничего общего с Java, а скорее с duosecurity.com API. Очевидно, что некоторые требуемые данные (метка времени запроса) отсутствуют.
На странице справки указано:
40104 Отсутствует отметка времени запроса
ПОЯСНЕНИЕ: Заголовок даты или даты X-Duo отсутствовал или был неправильно отформатирован.
РАЗРЕШЕНИЕ: Убедитесь, что заголовок даты или даты X-Duo существует и правильно отформатирован.
поэтому вам следует добавить что-то вроде
.header("X-Duo-Date", "Tue, 17 Aug 2021 12:24:26 -0000")
(Примечание: дата указана в формате RFC 2822)
Комментарии:
1. Я думаю, что эта ошибка связана с токенами, срок действия которых истекает через некоторое время, а не с учетными данными. Поэтому кажется, что он должен авторизоваться, получить токен, а затем использовать его вместо этого. Я думаю, что @DaveMustaine нужно прочитать документацию по api duo.com/docs/authapi#/auth