2014-12-14 6 views
0

Я рассматриваю возможность использования AWS для проекта, который будет иметь приложение IOS в качестве клиента и на стороне сервера, используя специально разработанный REST API с использованием Java Spring. Я читал о необходимости подписывать все запросы на службы AWS с использованием версии подписи (версия 4 для большинства служб) и хотел бы использовать механизм для защиты моих служб REST. Существует много документации для использования обертки REST в AWS SDK для таких сервисов, как S3 или DynamoDB, однако у меня возникли проблемы с получением четкого ответа на вопрос о том, как проверить подпись из пользовательского REST API, работающего на стебле Эластичной фасоли (например, WAR, развернутая на Tomcat, реализующая Spring REST) ​​Подпись службы REST с использованием AWS

1) Клиент IOS вызывает службу REST с использованием RestKit (или я могу использовать класс в Amazon SDK для IOS, который я могу использовать вместо этого). В качестве части вызова он указывает строку токена и ключ доступа AWS.

2) Серверная, программа Java, работающая на Tomcat на Elastic Bean stalk, принимает вызов REST и обрабатывает его, сначала проверяя подпись. Если подпись соответствует повторно вычисленной сигнатуре, то разрешите запрос, иначе отклоните ее.

Может ли кто-нибудь указать меня в правильном направлении с точки зрения того, что доступно в AWS SDK для ObjC и Java, чтобы выполнить проверку подлинности REST (опять же, не используя предварительно вложенные сервисы, такие как S3)?

Большое спасибо.

ответ

1

Это отличный вопрос и очень популярный запрос функций наших клиентов. На сегодняшний день нет AWS API для проверки подписей AWS Access Key/Secret Key на ваши пользовательские веб-службы.

Однако все, что делает AWS, основано на отзывах клиентов, и ваши отзывы помогают настроить наши приоритеты в области развития. Мы слышим это требование много.

+0

Благодарим вас за ответ, он был очень признателен. Каково ваше мнение относительно следующего: я хотел бы использовать S3 для хранения фотографий и DynamoDB для поддержания профиля пользователя, тем самым используя методы Amazon SDK (после аутентификации через Cognito). Я могу использовать SDK Amazon, чтобы сделать это, и подписанные запросы будут прозрачными для моего кода приложения. Для пользовательского вызова служб REST, что бы вы рекомендовали с точки зрения безопасности, OAuth2? Что делает большинство клиентов AWS в этом отношении? –

+0

Самый масштабируемый способ разработки приложения с использованием S3 или DynamoDB - позволить клиенту напрямую читать/записывать на бэкэнд S3 и DynamoDB, используя JavaScript (для веб-приложения) или iOS/Android SDK (для мобильных приложений). Это будет использовать бэкэнд AWS и разгрузить инфраструктуру вашей серверной части. Когда нужен API, я бы сделал его безстоящим и просто согласился с AK/SK, созданным Cognito на стороне клиента, чтобы гарантировать, что ваш API работает с привилегиями вашего клиента. Когда требуется больше привилегий, роли EC2 являются чистым решением. –