Awssdk работает на.net dotnetcore (IAM и GatewayAPI), но создает исключение Amazon.CognitoIdentity.Model.NotAuthorizedException на Android-приложении Xamarin
У меня проблема с 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: доступ к идентификатору '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) OS / ANDROID_7.0 PCL / Xamarin.Android
Консоль работает, xamarin выкидывает это исключение. Есть идеи?