Авторизация микросервисов в монолитном применении - PullRequest
0 голосов
/ 09 января 2019

У меня есть приложение django, которое ставит задачу в очередь. Другой сервис используется для чтения этой очереди и обработки некоторых файлов. В конце мне нужно сохранить обработанные файлы в базе данных, управляемой приложением django.

Я не хочу предоставлять микросервису доступ напрямую к базе данных, поскольку я хочу, чтобы ответственность заключалась только в обработке файлов.

Итак, я хотел опубликовать изменения в django, используя HTTP-запрос. Проблема в том, что у меня нет авторизации в то время, хотя я знаю, что HTTP с этого типа машины должен быть принят.

Для приложения django я использую JWT в качестве токена авторизации. Как лучше всего подойти к этому типу проблемы? Может, просто отправить токен вместе в очередь? Но как сделать такой токен? Не ясно, когда процесс будет выполнен ..

1 Ответ

0 голосов
/ 10 января 2019

Когда вы действительно думаете об этом, вам не нужно, чтобы ваши внутренние службы аутентифицировали себя, если они находятся в одной сети.

В этом случае - вы можете поместить Django за шлюз API (не пишите свой собственный, найдите проект с открытым исходным кодом и высокой оценкой). Затем через этот шлюз вы можете контролировать, какая конечная точка разрешена каким источником трафика. Затем вы можете легко управлять конечными точками, которые предназначены специально для внутренних служб, и для каких конечных точек требуется проверка подлинности внешним объектом.

Если они не находятся в одной сети (что означает, что они разделены огромной пропастью облачной сети), то обычным способом связи двух машин является API-ключ. В этом случае вы можете настроить свои службы с симметричными ключами или частной / общедоступной парой, это на самом деле не имеет значения. Машины можно доверять с секретными ключами. Зачем вам нужно отправить токен в очереди? Если службе разрешено публиковать результаты в Django, ей разрешается делать это для всех запросов, поэтому ее необходимо настроить с помощью ключа API, который сообщает вашему API, что ему разрешено публиковать обработанные файлы.

...