Тут мы создали свой API. Обращения к нему мы можем закрыть авторизацией BASIC , KEY , OAUTH , HMAC. В этой статье рассматриваем BASIC
1. Добавляем к созданному API плагин авторизации BASIC
curl -X POST http://localhost:8001/apis/myapi/plugins --data "name=basic-auth" --data "config.hide_credentials=true"
OUTPUT :
{"api_id":"772ba6dc-5d2e-4bbb-b600-03fe5f754094","id":"07f17354-c639-4d1d-a7d4-a70ab40b3ddb","created_at":1489654500000,"enabled":true,"name":"basic-auth","config":{"hide_credentials":true}}
2. Проверяем, что плагин есть в списке плагинов к нашему API:
curl http://localhost:8001/apis/myapi/plugins
3. Создаем пользователя kong ( Consumer ) :
curl -d "username=user1" http://localhost:8001/consumers/
4. Создаем для пользователя kong пару логин/пароль для basic auth :
curl -X POST http://localhost:8001/consumers/user1/basic-auth --data "username=testme" --data "password=testmetest"
5. Генерируем base64 строку для передачи авторизации через хидер :
perl -MMIME::Base64 -e 'print encode_base64("testme:testmetest")'
6. Передаем дополнительный хидер в запросе API :
curl -X POST http://localhost:8001/apis/ --data "name=myapi" --data 'upstream_url=http://tresnet.ru/' --data 'request_host=tresnet.ru' --header "Authorization: Basic dGVzdG1lOnRlc3RtZXRlc3Q="
7. Без авторизации получаем отлуп :
HTTP/1.1 401 Unauthorized
Date: Thu, 16 Mar 2017 09:04:55 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
WWW-Authenticate: Basic realm="kong"
Server: kong/0.9.6
{"message":"Unauthorized"}