Как проверить ключ API в функции AWS Lambda - PullRequest
0 голосов
/ 03 января 2019

Я прочитал довольно много статей, таких как эта , и похоже, что в настоящее время в AWS API Gateway нельзя отправить ключ API в строке запроса. У нас также есть несколько устаревших клиентов, которым потребуется передавать api-ключ в строке запроса.
Итак, я подумал о двух вариантах

1> Создать лямбда-функцию как Integration Type и проверить API в ключе внутри обработчика функции. Но я не могу понять, как проверить его по ключам в aws. Что-то вроде

public async Task<JObject> FunctionHandler(JObject request, ILambdaContext context)
{
      // i know how to get apikey from queryStringParameters here 
      // but how do i validate it against api keys in aws
}

2> Создайте новый пользовательский авторизатор, но снова не знаете, как мне это сделать.

Какой предпочтительный вариант. Я использую ядро ​​.NET . Есть ли уже доступные пакеты nuget?

Обратите внимание, что поддержка строк запросов требуется и не подлежит обсуждению, даже если это не рекомендуется по соображениям безопасности

1 Ответ

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

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

curl -X PUT \
https://XXXX.XXXXX-api.ca-central-1.amazonaws.com/PROD/XXX-microservice \
 -H 'Content-Type: application/json' \
 -H 'x-api-key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
 -d '{

 "initData": "HI",
 "name": "vaquar khan",
 "likes": "Java"
}'

Проверка ключа безопасности позаботилась об убежище API, поэтому лямбда не нужна требуется авторизатор

Если вы передаете строку запроса

URL:

https://XXXX.XXXXX-api.ca-central-1.amazonaws.com/PROD/XXX-microservice ?x-api-key=XXXXXXXXXXXXXXXX &uid=5

Python 2.7

from __future__ import print_function

import boto3
import json

print('Loading function')


def lambda_handler(event, context):
    print(event['params']['querystring']['x-api-key'])
    print(event['params']['querystring']['uid'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...