2016-12-13 5 views
1

У нас есть проект web api (.net), и мы планируем внедрить шлюз AWS API для обработки аутентификации, кеширования, e.t.c. Но у нас есть требование ограничить доступ для пользователя, например. из набора ID (ов) пользователь может получить доступ к данным для подмножества идентификаторов (ов). Теперь мы хотим обрабатывать аутентификацию только на стороне AWS, но я не уверен, как мы можем достичь этого, учитывая требование, которое у нас есть.Как реализовать пользовательскую аутентификацию (логику) с помощью AWS api gateway и web api

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

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

ответ

0

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

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

Если у вас есть API ресурс создан как:

/user/{id}/data

Вы можете построить результат Authorizer с доступом к определенным 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 
    } 
} 
Смежные вопросы