Как реализовать пользовательскую аутентификацию (логику) с помощью шлюза AWS API и веб-API

У нас есть проект веб-API (.net), и мы планируем внедрить шлюз AWS API для обработки аутентификации, кэширования и т. д. Но у нас есть требование ограничить доступ для пользователя, например. из набора идентификаторов пользователь может получить доступ к данным для подмножества идентификаторов. Теперь мы хотим обрабатывать аутентификацию только на стороне AWS, но я не уверен, как мы можем этого добиться, учитывая требования, которые у нас есть.

Кроме того, есть ли способ интегрировать Identity Server 3 с AWS API Gateway для пользовательской аутентификации.

P.S. Web Api 2.2 размещен на сервере IIS, а серверная часть — это сервер SQL, поэтому мы используем только AWS и шлюз API, мы используем нашу инфраструктуру для хостинга. У нас есть Identity Server 3, но в настоящее время он используется в качестве сервера аутентификации с другим приложением.


person Himanshu Bhankar    schedule 13.12.2016    source источник


Ответы (1)


Похоже, вы видели функцию пользовательской авторизации в API Gateway. Если Identity Server является общедоступным, вы можете аутентифицироваться на нем с помощью функции авторизации Lambda.

Предполагая, что клиент отправляет некоторый токен авторизации в заголовке, ваша функция Lambda может получить токен и пройти аутентификацию с помощью Identity Server. Затем вы сможете перевести права доступа вызывающего абонента в IAM-политику.

Если у вас настроен ресурс API, например:

/user/{id}/data

Вы можете построить результат авторизации с доступом к определенным значениям id:

{
  "principalId": "yyyyyyyy", // The principal user identification associated with the token sent by the client.
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": "execute-api:Invoke",
        "Effect": "Allow",
        "Resource": [
          "arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-1/data",
          "arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-61/data",
          "arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-4/data"
        ]
      }
    ]
  },
  "context": {
    "key": "value",
    "numKey": 1,
    "boolKey": true
  }
}
person jackko    schedule 16.12.2016