Добавляем CORS для работы с нашим API в kong

Posted in Новости on 6 апреля, 2017 by admin

CORS плагин kong реализует механизм доступа сторонних сайтов к ресурсам kong

1. Активация CORS для API :

curl -X POST http://localhost:8001/apis/myapi/plugins \
--data "name=cors" \
--data "config.origin=tresnet.ru" \
--data "config.methods=GET, POST" \
--data "config.headers=Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Auth-Token" \
--data "config.exposed_headers=X-Auth-Token" \
--data "config.credentials=true" \
--data "config.max_age=3600"

где :
config.origin — домен доступа ( В последних версиях опция была изменена на config.origins для задания списка доменов через запятую ( comma separated ) ( Access-Control-Allow-Origin )
config.methods — список методов доступа ( Access-Control-Allow-Methods )
config.headers — список заголовков запроса ( Access-Control-Allow-Headers )
config.exposed_headers — список ожидаемых заголовков запроса ( Access-Control-Expose-Headers )
config.credentials — заголовок Access-Control-Allow-Credentials ( должен быть выставлен в true )
config.max_age — TTL кеширования запроса в секундах

Tags: , ,

Добавляем ACL для нашего API в kong

Posted in Новости on 6 апреля, 2017 by admin

ACL — это плагин разграничения доступа пользователей к API. Ему необходим для работы один из плагинов авторизации ( BASIC или KEY например ).

1. Создаем ACL для нашего API к которому будут иметь доступ две группы

curl -X POST http://localhost:8001/apis/myapi/plugins --data "name=acl" --data "config.whitelist=group1, group2"

2. Добавляем пользователя ( consumer ) в группу

curl -X POST http://localhost:8001/consumers/user1/acls --data "group=group1"

3. Используем авторизацию как обычно

Tags: , , ,

Добавляем key auth для нашего API в kong

Posted in Новости on 16 марта, 2017 by admin

Тут мы создали свой API. Обращения к нему мы можем закрыть авторизацией BASIC , KEY , OAUTH , HMAC. В этой статье рассматриваем KEY AUTH.

1. Добавляем к созданному API плагин KEY AUTH

curl -X POST http://localhost:8001/apis/myapi/plugins --data "name=key-auth" --data "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 ключ ( в ответе на команду будет key: ) :

curl -X POST http://localhost:8001/consumers/user1/key-auth -d ''

5. Передаем дополнительный хидер в запросе API :

curl -i --url http://localhost:8000/ --header 'Host: tresnet.ru' --header "apikey: ad56e164e959478bbbfc8f3a4e8c0e23"

Tags: , , ,

Добавляем basic auth для нашего API в kong

Posted in Новости on 16 марта, 2017 by admin

Тут мы создали свой 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"}

Tags: , , ,

Создаем свой API в kong

Posted in Новости on 16 марта, 2017 by admin


curl -X POST http://localhost:8001/apis/ --data "name=myapi" --data 'upstream_url=http://tresnet.ru/' --data 'request_host=tresnet.ru'


name - уникальный идентификатор в kong ( может быть любым )
upstream_url - хост, на который будут передаваться запросы ( бекенд )
request_host - хост, с которым мы будем обращаться извне для доступа к upstream_url ( может быть любой, передается в хидере 'Host: example.com'

Tags: , ,