Awssdk работает на .net dotnetcore (IAM и GatewayAPI), но создает исключение Amazon.CognitoIdentity.Model.NotAuthorizedException на Android-приложении Xamarin - PullRequest
0 голосов
/ 13 декабря 2018

У меня проблема с Awssdk lib от Amazon, которую я не могу понять.

Я сделал простой класс для авторизации и получения ресурсов от Amazon.

Он использует конфигурацию от пользователяsessionConfig: clientId, identitypoolId, userpoolId, имя пользователя, пароль, секрет.

А также хост конфигурации запроса (signRequest), absolutpath, метод, регион.

var client = AmazonClient(sessionConfig, requestconfig);

С этим я могу легко

  client.GetClientTokens();

Это делает вызов к CognitoAuth userpools:

 var cred = new CognitoAWSCredentials(_sessionConfig.IdentityPoolId,` RegionEndpoint.EUCentral1);

        var provider = new AmazonCognitoIdentityProviderClient(cred, RegionEndpoint.EUCentral1);

        CognitoUserPool userPool = new CognitoUserPool(_sessionConfig.UserPoolId, _sessionConfig.ClientId, provider);

        CognitoUser user = new CognitoUser(_sessionConfig.UserPoolId, _sessionConfig.ClientId, userPool, provider, _sessionConfig.Secret, _sessionConfig.UserName);

        var authRequest = new InitiateSrpAuthRequest()
        {

            Password = _sessionConfig.Password

        };

        AuthFlowResponse authResponse = await user.StartWithSrpAuthAsync(authRequest).ConfigureAwait(false);

Затем я просто вызываю

client.GetApiResource(absolutpath);

И я могу получить с этой информацией аутентификации ресурс изAPI.

_requestConfig.AbsolutePath = absolutePath;
            //Signmethod from Amazon
            GetSignedRequest();

            var responses = _webRequest.GetResponse();
            var result = responses.GetResponseStream();
            var data = string.Empty;

            using (var sr = new StreamReader(result))
            {
                data = sr.ReadToEnd();
            }

            return data;

Этот код работает как чудо в моем консольном приложении dotnetcore, я становлюсь токенами доступа к данным и пользовательским или другим ресурсам API.

Когда я хочу использовать его наРешение Xamarin.Android.

Я становлюсь, когда пытаюсь получить учетные данные:

user.StartWithSrpAuthAsync(authRequest).ConfigureAwait(false);

Amazon.CognitoIdentity.Model.NotAuthorizedException: Доступ к Identity 'eu-central-1: xxxxxxxxxxxxxxxxxxxxx 'длявелено.

System.Net.HttpStatusCode.BadRequest

errorCode "NotAuthorizedException"

Единственное, что я вижу, это другое - UserAgent из конфигурации провайдера:

консольная программа:

aws-sdk-dotnet-coreclr / 3.3.11.22 aws-sdk-dotnet-core / 3.3.29.12 .NET_Core / 4.6.26606.02 OS / Microsoft_Windows_10.0.14393

Приложение Xamarin.Android:

aws-sdk-dotnet-pcl / 3.3.4.3 aws-sdk-dotnet-core / 3.3.29.13 ОС Mono / 5.10.1 (tarball)/ANDROID_7.0 PCL / Xamarin.Android

Консоль работает, xamarin выдает это исключение.Есть идеи?

...