Я рассматриваю возможность использования 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)?
Большое спасибо.
Благодарим вас за ответ, он был очень признателен. Каково ваше мнение относительно следующего: я хотел бы использовать S3 для хранения фотографий и DynamoDB для поддержания профиля пользователя, тем самым используя методы Amazon SDK (после аутентификации через Cognito). Я могу использовать SDK Amazon, чтобы сделать это, и подписанные запросы будут прозрачными для моего кода приложения. Для пользовательского вызова служб REST, что бы вы рекомендовали с точки зрения безопасности, OAuth2? Что делает большинство клиентов AWS в этом отношении? –
Самый масштабируемый способ разработки приложения с использованием S3 или DynamoDB - позволить клиенту напрямую читать/записывать на бэкэнд S3 и DynamoDB, используя JavaScript (для веб-приложения) или iOS/Android SDK (для мобильных приложений). Это будет использовать бэкэнд AWS и разгрузить инфраструктуру вашей серверной части. Когда нужен API, я бы сделал его безстоящим и просто согласился с AK/SK, созданным Cognito на стороне клиента, чтобы гарантировать, что ваш API работает с привилегиями вашего клиента. Когда требуется больше привилегий, роли EC2 являются чистым решением. –