AWS Учетные данные Cognito для IoTdataClient Xamarin - PullRequest
0 голосов
/ 05 февраля 2020

У меня проблемы с подключением к aws iot через cognito.

Я пытаюсь подключить Авторизованного пользователя к AWS IoT ядру с xamarin. Я успешно добавил пользователя и затем получил токены из пула пользователей Cognito. Проблема, кажется, состоит в двух вещах:

  1. мой код

или

разрешений для ролей IAM или / и настройки Cognito Federated Identities.

1: мой код

var credintelas = new AnonymousAWSCredentials();
var provider = new AmazonCognitoIdentityProviderClient(credintelas, RegionEndpoint);
CognitoUserPool userPool = new CognitoUserPool(PoolId, AppClienID, provider);
CognitoUser user = new CognitoUser("UserName", AppClienID, userPool, provider);
string password = "Password";

AuthFlowResponse context = await user.StartWithSrpAuthAsync(new InitiateSrpAuthRequest()
{
    Password = password
}).ConfigureAwait(false);

CognitoAWSCredentials credentials = user.GetCognitoAWSCredentials(IdentyPoolID, RegionEndpoint);

, а затем я передаю кредиты IoTdataclient следующим образом,

AmazonIotDataConfig amazonIotDataConfig = new AmazonIotDataConfig();
amazonIotDataConfig.RegionEndpoint = RegionEndpoint;
amazonIotDataConfig.UseHttp = false;
amazonIotDataConfig.SignatureVersion = "4";
amazonIotDataConfig.ServiceURL = amazonIotDataConfig.DetermineServiceURL();
AmazonIotDataClient amazonIotDataClient = new AmazonIotDataClient(credentials, amazonIotDataConfig);

string jsonString = "{ \"xxxStart\" : true, \"xxxxStart\" : false, \"xxxxStop\" : false}";
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString ?? string.Empty));

var publishreq = new PublishRequest
{
    Payload = memStream,
    Qos = 0,
    Topic = "TESTI/DEMO"

};

await amazonIotDataClient.PublishAsync(publishreq);
AWS настройка консоли:

A) Я настроил IAM Auth_role для идентификации Cognito и подключил его к пулу идентификации auth_role

Политика IAM, которая привязана к пулу идентификации

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:*"
            ],
            "Resource": "*"
        }
    ]
}

B) Политика Iot была подключена к пулу идентификации Cognito с использованием AWS Cli

Политика IoT

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:*",
      "Resource": "*"
    }
  ]
}

C) Пул пользователей Cognito был привязан к пулу идентификации Cognito как провайдеру автора

Так чего мне не хватает?

...