Я пытаюсь использовать подход, описанный в следующей статье блога, для аутентификации когнитивной идентичности в S3 из Java:
Я успешно реализовал провайдер аутентификации разработчика и могу получить действительный токен OpenId для моей когнитивной личности. Этот токен работает как в iOS, так и в Android SDK при загрузке / скачивании файлов на S3. К сожалению, мне не удалось успешно аутентифицировать ту же личность для S3 в моем приложении Java. Вот код, который я использую:
Map<String, String> logins = new HashMap();
logins.put("cognito-identity.amazonaws.com", cognitoOpenIdToken);
GetCredentialsForIdentityRequest getCredentialsRequest =
new GetCredentialsForIdentityRequest()
.withIdentityId(cognitoIdentityId)
.withLogins(logins);
AmazonCognitoIdentityClient cognitoIdentityClient =
new AmazonCognitoIdentityClient();
GetCredentialsForIdentityResult getCredentialsResult =
cognitoIdentityClient.getCredentialsForIdentity(getCredentialsRequest);
Вызов getCredentialsForIdentity завершается ошибкой «com.amazonaws.AmazonClientException: невозможно загрузить учетные данные AWS от любого поставщика в цепочке». Этот метод задокументирован как общедоступный API, не требующий аутентификации. Однако я заметил, что вызов завершается успешно, если выполняется из среды, в которой в системных переменных настроены действительные учетные данные IAM. Он не работает в средах, где это не так.
Я упустил что-то простое?