Я играю вокруг с использованием услуг Amazon Web в моем персональном проекте. Я захватил их SDK AWS для.NET, и я использую это, но я немного смущен.
Доступ к веб-сервису (в этом случае, SimpleDB, хотя я не думаю, что это действительно существенно к вопросу) авторизовывается через частную/с открытым ключом пару.
SDK AWS для API.NET, используемого для создания объекта клиента, требует закрытого ключа:
AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey);
Это - клиентское приложение, таким образом, код работал бы полностью на клиенте.
Предположение, что у клиента должен был бы быть доступ к моему закрытому ключу, чтобы иметь доступ к SimpleDB. Но амазонка неоднократно и решительно заявляет, что мой закрытый ключ не должен выходить из-под моего контроля.
Это не имеет смысла мне, таким образом, я полагаю, что должен пропускать что-то.
Действительно ли клиентское приложение является неправильной моделью для услуг Amazon Web в целом для использования их SDK AWS для.NET, или я пропускаю что-то, что делает клиентское приложение совершенно разумным? Существует ли хороший способ работать вокруг этого, не создавая мой собственный сервис прокси, который аутентифицировал бы клиенты и передал бы их запросы к SimpleDB?
Вам не нужно внедрять прокси-сервер, который обслуживает удаленную (AWS) службу. Просто реализуйте простую небольшую службу с проверкой подлинности, которая возвращает клиенту URL-адрес и заголовки для использования при обращении к AWS. Ваш аутентифицированный веб-сервис хранит секрет AWS и предоставляет клиенту только подписанный URL-адрес запроса и заголовки, который затем выполняет фактический рабочий вызов, используя эту возвращенную информацию.
Таким образом, вы избегаете накладных расходов во время вызова AWS, связанных с прохождением через ваши собственные серверы, сохраняя задержку, пропускную способность, связанные сокеты на вашем сервере, сложность обработки сбоев и т. Д. клиент, чтобы получить надлежащие инструкции.