Как проверить базовую аутентификацию HTTP в среде Python Google Cloud Functions - PullRequest
0 голосов
/ 16 ноября 2018

Как это можно реализовать?

Я не уверен, возможно ли использовать различные библиотеки, связанные с колбами, поскольку они используют декораторы python - и у меня нет доступа к маршрутам Flask.

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

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Облачные функции (CF) в первую очередь предназначены для выполнения простых, автономных задач, а не сложных приложений.

Рекомендуемый метод контроля доступа CF основан на учетных записях служб и IAM .От Учетная запись службы времени выполнения :

Во время выполнения Cloud Functions использует учетную запись службы PROJECT_ID@appspot.gserviceaccount.com, которая имеет роль Editor в проекте.Вы можете изменить роли этой учетной записи службы, чтобы ограничить или расширить разрешения для выполняемых функций.

Этот метод контроля доступа применяется вне фактического выполнения CF, поэтому вам не нужно беспокоитьсяоб аутентификации в коде CF - вы уже знаете, что она может быть выполнена только с использованием соответствующих учетных данных учетной записи службы.

Да, может быть в состоянии использовать настраиваемую схему аутентификации, аналогичную той(s) использовать в более сложных приложениях, но это не будет тривиальным - это не то, для чего были разработаны CF.См. Как-то связаны Когда выбрать App Engine вместо облачных функций?

0 голосов
/ 16 ноября 2018

needs.txt:

basicauth==0.4.1

И код:

from basicauth import decode


encoded_str = request.headers.get('Authorization')
username, password = decode(encoded_str)

if (username == "example", password == "*********"):
    authed_request = True
...