Аутентификация Pritunl Rest Api с использованием JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Аутентификация Pritunl Rest Api с использованием Java

Сообщение Anonymous »

Нужна помощь с аутентификацией и доступом к Pritunl API. Я получаю 401 несанкционированный, и я думаю, что это происходит, потому что я что -то пропустил при конвертированном Python в Java. Если кто -то мог бы поделиться своим примером или дать подсказку, как решить проблему. Заранее спасибо. < /P>
Мой пример: < /p>
@Service
public class PritunlServiceImpl {

private static final String API_URL = "https://xxxxxxxxxxxxxxxx";
private static final String API_TOKEN = "xxxxxxxxxxxxxxxxxxxxxx";
private static final String API_SECRET = "xxxxxxxxxxxxxxxxxxxxxx";

public String getOrganization() throws Exception {

String path = "/organization";
String url = API_URL + path;
String timestamp = String.valueOf(Instant.now().getEpochSecond());
String authNonce = UUID.randomUUID().toString();

StringBuilder authStringBuilder = new StringBuilder();
authStringBuilder.append(API_TOKEN).append("&");
authStringBuilder.append(timestamp).append("&");
authStringBuilder.append(authNonce).append("&");
authStringBuilder.append("GET").append("&");
authStringBuilder.append(path);

String authString = authStringBuilder.toString();
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(API_SECRET.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
mac.init(secretKey);

byte[] hmacBytes = mac.doFinal(authString.getBytes(StandardCharsets.UTF_8));
String authSignature = Base64.getEncoder().encodeToString(hmacBytes);

HttpHeaders headers = new HttpHeaders();
headers.set("Auth-Token", API_TOKEN);
headers.set("Auth-Nonce", authNonce);
headers.set("Auth-Timestamp", timestamp);
headers.set("Auth-Signature", authSignature);
headers.set("Content-Type", "application/json");

RestTemplate restTemplate = new RestTemplate();
HttpEntity request = new HttpEntity(headers);
ResponseEntity response = restTemplate.exchange(new URI(url), HttpMethod.GET, request, String.class);

if (response.getStatusCode().is2xxSuccessful()) {
return response.getBody();
} else {
throw new RuntimeException("Failed to fetch Organization: " + response.getStatusCode());
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... using-java
Ответить

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

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

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

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

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