0

我对来自 Amazon 的 Awssdk lib 有一个我无法理解的问题。

我做了一个简单的类来授权和从亚马逊获取资源。

它使用来自用户 sessionConfig 的配置:clientId、identitypoolId、userpoolId、username、password、secret。

还有请求配置(signRequest)主机、绝对路径、方法、区域。

var client = AmazonClient(sessionConfig, requestconfig);

有了这个我可以很容易

  client.GetClientTokens();

这会调用 CognitoAuth 用户池:

 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

错误代码“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 抛出此异常。有任何想法吗?

4

0 回答 0