2016-09-28 2 views
0

Я пытаюсь сделать запрос API GET конечной точке на моем Chef Server и задавался вопросом, как я могу использовать свое имя пользователя и имя пользователя.pem, чтобы успешно выполнить запрос. В настоящее время я использую структуру extJS для выполнения этого действия.Использование заголовков аутентификации в REST API Proxy, extJS и chef

У меня есть приложение очень похожее на это:

REST Proxy Example

Где я хотел бы, чтобы отобразить результаты запроса GET к сетке.

Chef Server API GET Cookbooks

Использование веб-сайта REST тестирования API (REST API testing), я был в состоянии сделать простой запрос со следующим кодом:

var listOfCookbooks = Ext.create('Ext.data.Store', { 
autoLoad: true, 
autoSync: true, 
model: 'Optional Cookbooks', 
proxy: { 
    type: 'rest', 
    url: 'http://jsonplaceholder.typicode.com/posts', 
    reader: { 
     type: 'json', 
     rootProperty: 'data' 
    }, 
    writer: { 
     type: 'json' 
    } 
}, 
listeners: { 
    write: function(store, operation) { 
     var record = operation.getRecords()[0], 
      name = Ext.String.capitalize(operation.action), 
      verb; 
    } 
} 
}); 

Раньше я был с помощью PHP обертке совершать вызовы к API Chef Server, который позволил мне установить мое имя пользователя и username.pem файл:

<?php 

use Guzzle\Http\Client; 
use LeaseWeb\ChefGuzzle\Plugin\ChefAuth\ChefAuthPlugin; 

// Supply your client name and location of the private key. 
$chefAuthPlugin = new ChefAuthPlugin("my-dashboard", "my-dashboard.pem"); 

// Create a new guzzle client 
$client = new Client('https://manage.opscode.com'); 
$client->addSubscriber($chefAuthPlugin); 

// Now you can make calls to the chef server 
$response = $client->get('/organizations/my-organization/nodes')->send(); 

$nodes = $response->json(); 

?> 

Благодарность

ответ

0

Когда вы говорите extJS, я предполагаю, что вы говорите об этом из браузера. Это не рекомендуется, так как вам придется загружать весь закрытый ключ RSA в Javascript, который небезопасен, поскольку вы не можете разумно обеспечить его отсутствие в других контекстах. Вам понадобится какой-то прокси (например, упомянутый вами PHP-код), который использует более традиционный метод проверки сеанса браузера, такой как cookie. В целом это будет очень сложно и раздражать, и я рекомендую вам уменьшить объем ваших потребностей.

+0

Да, это именно то, о чем я думаю. Мне удалось настроить PHP-код в моем проекте, поэтому я продолжу использовать эту оболочку. Спасибо за подсказку – rafa

+0

Существует RFC Chef, который был принят, но никогда не реализован, чтобы добавить режим аутентификации токена к API-интерфейсу сервера, что сделало бы это намного проще (прокси-сервер выдаст кратковременный токен и передаст его браузеру). Возможно когда-нибудь :) – coderanger

Смежные вопросы