Kong и JWT без создания потребителей

В настоящее время я играю с Kong API Gateway, и я хотел бы использовать его для проверки аутентификации пользователей на шлюзе и ограничения доступа к службам, если пользователь не вошел в систему должным образом. У меня есть служба аутентификации, которая выдает JWT всякий раз, когда пользователь входит в систему.

Теперь я хотел бы поделиться секретом JWT с Kong и использовать его для проверки выданных JWT для защиты служб, которые нуждаются в надлежащей аутентификации.

Я взглянул на этот плагин: https://getkong.org/plugins/jwt/

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

Любая подсказка будет принята с благодарностью.


person Magnus    schedule 17.03.2016    source источник
comment
Вы узнали об этом? Я в таком же положении   -  person Riley Lark    schedule 22.03.2016
comment
К сожалению, еще нет, я также пытался связаться с людьми из Конга через gitter, но безуспешно. Если я что-то узнаю, я вернусь к вам здесь.   -  person Magnus    schedule 22.03.2016
comment
@Magnus Не могли бы вы изменить свой правильный ответ, как предложено в комментариях? Ответ Пранджала Анеджи следует отметить как правильный.   -  person GGAnderson    schedule 20.04.2019


Ответы (3)


The answer given by Riley is sort of correct in implementation but that is not the intended use of a consumer in the Kong.

Потребитель в Конге - это приложение, использующее API. Итак, если у вас нет нескольких поставщиков, использующих ваше приложение / веб-службу, я предлагаю вам создать одного потребителя.

Для этого потребителя можно создать несколько пар ключей и секретов (учетные данные JWT). Создайте JWT для пользователя, используя ключ и секрет пользователя. Сохраните этот ключ и секрет в своей текущей базе данных вместе с вашим идентификатором пользователя и другими данными. Создайте свой JWT, используя их, и верните JWT пользователю.

Все, что вы хотите добавить в качестве утверждения, можно добавить в JWT во время его создания. Вы можете создать чек по этим претензиям в Kong. Итак, когда вы получаете вызов любого из ваших API вместе с этими JWT, Kong проверит действительность JWT (вместе со всеми утверждениями) и только затем разрешит доступ к API.

person Pranjal Aneja    schedule 18.10.2017
comment
Документация Kong, кажется, противоречит вам. Самый простой способ думать о потребителях - это сопоставить их один на один с пользователями. Но для Конга это не имеет значения. Основной принцип для потребителей заключается в том, что вы можете прикреплять к ним плагины и, следовательно, настраивать поведение запроса. Итак, у вас могут быть мобильные приложения, и вы можете определить одного потребителя для каждого приложения или его версии. Или иметь потребителя для каждой платформы, например пользователь Android, пользователь iOS и т. д. getkong.org/docs/0.11.x / auth / # потребителей - person freakTheMighty; 21.12.2017
comment
Я думаю, что документы написаны для пользователей mashape.com - пользователей, которые настраивают службы, которые будут вызывать API, а НЕ пользователей, которые регистрируются на вашем веб-сайте для использования создаваемой вами службы. Я согласен, это должен быть отмечен правильный ответ - person Riley Lark; 14.06.2018

Мне кажется, что дизайн плагина JWT для Kong не хочет делиться с вами секретом JWT - он хочет полностью владеть JWT. Вам действительно нужно будет создать потребителя для каждого пользователя, и позволить Kong управлять этим.

Я задал несколько вопросов для подтверждения в группе Google - см. https://groups.google.com/forum/?fromgroups#!topic/konglayer/XHnVEGoxZqo

Два основных момента:

Можете ли вы просто подтвердить, что должно быть нормально делать одного потребителя и одну учетную запись для каждого пользователя?

Мало того, что это нормально, но это рекомендуемый способ :)

а также

Будет ли Конг счастлив иметь два миллиона потребителей одного API? А как насчет 200 миллионов?

Технически это не должно быть проблемой, я бы порекомендовал настроить POC, где вы можете экспериментировать с большим количеством пользователей, чтобы оптимизировать соединение между Kong и хранилищем данных и убедиться, что мы все правильно настроили.

person Riley Lark    schedule 26.03.2016

Фактически вы можете передать секрет плагину JWT при его создании:

$ curl -X POST http://kong:8001/consumers/${consumer_id}/jwt \ -H "Content-Type: application/x-www-form-urlencoded" \ --data "secret=mysecret&consumer_id=${consumer_id}"

person Davide Vernizzi    schedule 18.05.2018