Как войти в консоль AWS, используя ключ доступа, секретный ключ и токен сеанса? - PullRequest
0 голосов
/ 28 января 2020

У меня есть пул пользователей cognito и пул удостоверений, а также приложение, в которое я интегрировал все эти вещи, выполняя регистрацию и вход в систему и получая временные учетные данные, такие как ключ доступа, секретный ключ и токен сеанса. Я хочу создать кнопку в своем приложении, чтобы после успешного входа в систему одна кнопка открывала консоль AWS, и этот пользователь мог получить доступ к AWS Сервисам, таким как S3.

Я получил ссылку , которую можно использовать для создания URL-адреса, который я могу поместить за кнопку, но как это реализовать, я пытаюсь использовать Java, но он не работает

 GetFederationTokenRequest getFederationTokenRequest = 
  new GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(1800);
getFederationTokenRequestet.getName("UserName");

// A sample policy for accessing Amazon Simple Notification Service (Amazon SNS) in the console.

String policy = "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":\"sns:*\"," +
  "\"Effect\":\"Allow\",\"Resource\":\"*\"}]}";

getFederationTokenRequest.setPolicy(policy);

В этой строке написано несколько маркеров. SetDurationSeconds, SetName, SetPolicy имеют эту ошибку

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вы можете создать AWS консольный URL-адрес из временных учетных данных, извлекая SigninToken из конечной точки https://signin.aws.amazon.com/federation.

Сначала необходимо создать объект JSON с AWS временные учетные данные:

{
  "sessionId": "<aws access key id>",
  "sessionKey": "<aws secret access key>",
  "sessionToken": "<aws session token>"
}

Используйте это JSON в качестве значения параметра «Сеанс» в следующем URL-адресе

https://signin.aws.amazon.com/federation?Action=getSigninToken&Session=<the JSON object>

The JSON ответ будет выглядеть так:

{
  "SigninToken":"VsPfcblaC....."
}

Используйте значение SigninToken в следующем URL. Откроется консоль:

https://signin.aws.amazon.com/federation?Action=login&Destination=https://console.aws.amazon.com/&SigninToken=<SigninToken>

Значением "Destination" может быть указанный c URL-адрес службы, например EC2 или S3

. Я создал пример реализации здесь: https://gist.github.com/janaz/80b1f6054a044ce78cbf5abae7288b50

0 голосов
/ 29 января 2020

Во-первых, убедитесь, что у вас есть правильные роли IAM с разрешениями для доступа к вашим AWS ресурсам (S3, Console и т. Д. c.). Подробнее см. В Руководстве разработчика по Cognito - роли IAM .

О вашем Java коде, похоже, что пример в приведенной ссылке не готов для использования в качестве "копирования и вставки". Кроме того, это зависит от AWS SDK для Java, который необходимо импортировать в проект.

Обязательно вставьте код под импортом в правильный блок кода. Несколько маркеров появляются ошибки, когда вы пытаетесь вставить операторы непосредственно в класс, а не в конструктор, метод, инициализатор и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...