Я использую App Engine Standard со средой исполнения Python 2 и фреймворками конечных точек.При отправке запроса приложение просто возвращает «Успешно», если запрос был выполнен.Я пытаюсь реализовать аутентификацию, чтобы неаутентифицированные пользователи не смогли выполнить запрос.Я сделал следующее:
- Изменен мой декоратор main.py для включения издателей и аудитории:
issuers={'serviceAccount': endpoints.Issuer('[MYSERVICEACCOUNT]', 'https://www.googleapis.com/robot/v1/metadata/x509/[MYSERVICEACCOUNT]')},
audiences={'serviceAccount': ['[MYSERVICENAME]-dot-[MYPROJECT].appspot.com']}
Изменен метод main.py для проверки правильности пользователя:
user = endpoints.get_current_user()
if user is None:
raise endpoints.UnauthorizedException('You must authenticate first.')
Восстановил и заново развернул мой документ openAPI.Теперь в нем есть разделы security и securityDefinitions.
Обновлен мой app.yaml для ссылки на эту версию конечных точек.
Повторно развернуто мое приложение
Чтобы сделать авторизованный запрос к моему приложению, я сделал следующее:
Я назначил служебной учетной записи роль потребителя услуги в моей службе конечных точек.
Создание подписанного jwt с помощью функции generate_jwt из документации Google .Я передаю учетные данные, используя файл ключа json учетной записи службы.
payload = json.dumps({
"iat": now,
"exp": now + 3600,
"iss": [MYSERVICEACCOUNT],
"sub": [MYSERVICEACCOUNT],
"aud": [MYSERVICENAME]-dot-[MYPROJECT].appspot.com
})
Сделайте запрос, используя функцию make_jwt_request из документации Google.
headers = {
'Authorization': 'Bearer {}'.format(signed_jwt),
'content-type': 'application/json'}
Я получаю 401 Ошибка клиента: не авторизован для ошибки URL.Я что-то упустил?