Как отключить выполнение API-функции CKAN package_relationship_create без ключа API?

Я пытаюсь создать связь между наборами данных (пакетами) CKAN из моей командной строки Linux с помощью следующей команды

curl -v http://192.168.1.200/ckan/api/action/package_relationship_create -d '{"subject":"rkb-explorer-irit","object":"rkb-explorer-wiki","type":"dependency_of","comment":"some comment"}' -H "Authorization:76985a7a-f550-4b8d-8352-d7b828460fdc"

и со следующим кодом PHP

        $postFields = array("subject" => $subject, "object" => $object, "type" => $type, "comment" => $comment);

        $ch = curl_init($url);

        $options = array( 
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => array('Content-type: application/json'),
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => json_encode($postFields),
        CURLOPT_HTTPAUTH => $apiKey
        );

        curl_setopt_array( $ch, $options ); 

        $result =  curl_exec($ch); 

и это работает. Но у меня проблема с авторизацией. Независимо от того, предоставляю ли я ключ API или нет, отношения все равно создаются!

Итак, как настроить мой CKAN, чтобы исключить такую ​​ситуацию? Когда я пытаюсь создать набор данных из командной строки без ключа API, он мне отказывает, и в этой ситуации все в порядке.

Как я уже сказал, я хочу отключить любое действие по созданию, обновлению или удалению с неправильным API и без API. Как я могу это сделать?


person milic    schedule 01.11.2014    source источник


Ответы (1)


Вы можете написать плагин IAuthFunctions, чтобы изменить поведение авторизации на то, что вы хотите. См. раздел написания расширений CKAN в документации, он содержит пример плагина IAuthFunctions.

person Sean Hammond    schedule 05.11.2014