Попытка избавиться от ручного ввода имени пользователя и пароля в всплывающем окне для вызовов API. в моем приложении React. Basi c Auth не работает с использованием axios - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь пройти аутентификацию в фоновом режиме при загрузке страницы и избавиться от ручного ввода имени пользователя и пароля для доступа к вызовам API из приложения для мониторинга производительности приложений. Я использовал следующий код, чтобы попытаться аутентифицироваться автоматически. Я создал функцию и вызвал ее с помощью ax ios GET в ComponentDidMount()

async  Authorise()
    {
      var session_url = '/controller/rest/applications';
var username = 'user';
var password = 'password';
var basicAuth = 'Basic ' + btoa('username' + ':' + 'password');
await axios.get("/controller/rest/applications/", {}, {
  withCredentials: true,
      connection: "open",
      upload: "XMLHttpRequestUpload",
      readyState: "4",

  headers: { 'Authorization': + basicAuth,  "Accept": "application/xml",
       "Content-Type": "application/xml",
       "Access-Control-Allow-Origin": "*",

 }
}).then(function(response) {
  console.log('Authenticated');
}).catch(function(error) {
  console.log('Error on Authentication');
});}

Я получаю 403 для кода, написанного выше.

Вот код, человек из службы поддержки приложения дал мне пройти аутентификацию (Basi c Auth), код находится в Java.

restClient = ClientBuilder.newBuilder().build();
URI uri = restClient.target(controllerUrl).getUri();
HttpGet httpGet = new HttpGet(uri);
httpGet.setHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
CredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(
        AuthScope.ANY,
 new UsernamePasswordCredentials("user1@customer1", "password")
);
CloseableHttpClient httpClient = HttpClientBuilder.create()
        .setDefaultCredentialsProvider(provider)
        .build();

try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
 int status = response.getStatusLine().getStatusCode();
 if (status == 200) {
        System.out.println(EntityUtils.toString(response.getEntity()));
    }
} catch (IOException e) {
 throw new RuntimeException("Exception while logging into the controllerUrl " + controllerUrl, e);
}

Может ли кто-нибудь помочь мне с эквивалентом javascript ax ios код для приведенного выше фрагмента кода java для basi c auth?

...