Нужна помощь с аутентификацией и доступом к 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
Аутентификация Pritunl Rest Api с использованием Java ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1737718571
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());
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79382076/pritunl-rest-api-authentication-using-java[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия