【问题标题】:Can I use AWS Cognito Credentials to access Amazon SimpleDB?我可以使用 AWS Cognito 凭证访问 Amazon SimpleDB 吗?
【发布时间】:2017-06-06 05:48:38
【问题描述】:

我在我的移动应用程序中实施了 Amazon SimpleDB,并使用凭证文件中的秘密访问密钥使其全部运行。据我所知,这对移动应用程序不起作用且不安全,因此我研究了使用 Cognito 来验证用户并授予他们对 SimpleDB 的访问权限。

我让 Cognito 正确连接和同步,但由于某种原因,当我将凭据传递给新的 AmazonSimpleDBClient 然后调用选择表达式时,它会弹出“参数不能为空”消息。

我是这样称呼它的:

        //Connect to the DB
    var sdb = new AmazonSimpleDBClient(
        credentials: Credentials, 
        region: RegionEndpoint.USWest2);

    //Check if this user has any bots yet
    string selectExpression = "Select count(*) From Bots where UserName = '" + username + "'";
    var selectRequestAction = new SelectRequest { SelectExpression = selectExpression };
    var selectResponse = sdb.Select(selectRequestAction);

这就是凭据的设置方式:

private CognitoAWSCredentials Credentials
{
    get
    {
        if (_credentials == null)
            _credentials = new CognitoAWSCredentials("IDENTITY_POOL_ID", RegionEndpoint.APSoutheast2);
        return _credentials;
    }
}

我似乎找不到与此问题相关的任何内容,甚至找不到任何人试图像这样使用 SimpleDB - 他们似乎都使用硬编码凭据,同时说它不安全......

编辑(完全错误) ArgumentNullException:参数不能为空。 参数名称:key System.Collections.Generic.Dictionary`2[System.Type,Amazon.Runtime.IExceptionHandler].TryGetValue(System.Type 键,IExceptionHandler& 值)(位于 /Users/builduser/buildslave/mono/build/mcs/class/corlib/ System.Collections.Generic/Dictionary.cs:588) Amazon.Runtime.Internal.ErrorHandler.ProcessException (IExecutionContext executionContext, System.Exception 异常) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/ErrorHandler/ErrorHandler.cs :202) Amazon.Runtime.Internal.ErrorHandler.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/ErrorHandler/ErrorHandler.cs:78) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs:57) Amazon.Runtime.Internal.CallbackHandler.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/CallbackHandler.cs:45) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs:57) Amazon.Runtime.Internal.Signer.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/Signer.cs:38) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs:57) Amazon.Runtime.Internal.CredentialsRetriever.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/CredentialsRetriever.cs:72) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) (在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs:57) Amazon.Runtime.Internal.RetryHandler.InvokeSync (IExecutionContext executionContext)(在 E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/RetryHandler/RetryHandler.cs:74)

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 它告诉你哪个字段不能为空?究竟是什么错误信息?
  • 它没有告诉我哪个字段为空。这似乎是 sdb.Select 函数中的内部错误。如果有机会,我会发布错误的完整详细信息。
  • 我在描述中发布了完整的错误,不适合发表评论。干杯
  • 我认为我的引用可能存在一些问题,这突然出现,我不确定为什么:错误 13 类型“Amazon.Runtime.AmazonWebServiceResponse”是在一个程序集中定义的未参考。您必须添加对程序集“AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604”的引用。我已经安装了那个参考,所以我不知道这条消息在说什么。顺便说一句,这是一个 Unity 项目,我不知道这是否会有所不同。

标签: c# amazon-web-services credentials amazon-cognito amazon-simpledb


【解决方案1】:

结果要么是我的引用有问题,要么是 SimpleDB/Cognito 包不兼容。

我删除了所有对亚马逊的引用。更新了 NuGet,然后使用 NuGet 命令行通过以下命令安装 Cognito 和 SimpleDB:

安装包 AWSSDK.CognitoIdentity 安装包 AWSSDK.SimpleDB

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2020-07-29
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多