Xamarin.android 使用AWS Cognito联合身份验证失败,因为用户未经过身份验证

Xamarin.android 使用AWS Cognito联合身份验证失败,因为用户未经过身份验证,xamarin.android,amazon-cognito,aws-cognito,federated-identity,Xamarin.android,Amazon Cognito,Aws Cognito,Federated Identity,我正在为一个名为AWS Lambda的android应用程序添加正确的身份验证。应用程序用户需要注册。该应用程序应支持公共登录提供商,如Google+或Facebook。为此,我想我应该使用AWS Cognito和联邦身份 我正在尝试按照 其中包括 盖蒂 GetOpenIdToken 假设身份 在AWS控制台中,我创建了一个AWS标识池,并将Google+配置为身份验证提供者。我已禁用未经身份验证的访问,因为我需要始终对用户进行身份验证 我在调用GetId时遇到了一个问题,这是该工作流的第一步,

我正在为一个名为AWS Lambda的android应用程序添加正确的身份验证。应用程序用户需要注册。该应用程序应支持公共登录提供商,如Google+或Facebook。为此,我想我应该使用AWS Cognito和联邦身份

我正在尝试按照 其中包括

  • 盖蒂
  • GetOpenIdToken
  • 假设身份
  • 在AWS控制台中,我创建了一个AWS标识池,并将Google+配置为身份验证提供者。我已禁用未经身份验证的访问,因为我需要始终对用户进行身份验证

    我在调用GetId时遇到了一个问题,这是该工作流的第一步,它返回并出错,通知我未对此标识池启用未经验证的访问。对,我的用户正在进行身份验证,在工作流的早期,用户还不能被身份验证,这就是问题所在,不是吗

    下面是代码(Xamarin.Android C#)

    使用Amazon.CognitoIdentity;
    var shortLivedAWScredentials=新的CognitoAWSCredentials(
    “身份池id”,
    AWSConfigs.RegionEndpoint);
    var cognitoClient=新AmazonCongnitoIdentityClient(
    shortLivedAWScredentials,
    AWSConfigs.RegionEndpoint);
    var logins=newdictionary();
    登录名[“accounts.google.com”]=“id令牌”;
    var request=new GetIdRequest();
    request.IdentityPoolId=“标识池id”;
    request.Logins=Logins;
    var task=cognitoClient.GetIdAsync(请求);
    var结果=等待任务;
    
    GetId调用引发异常,告诉我此标识池不支持未经身份验证的访问。关于使用联邦身份的AWS Cognito进行身份验证,我误解了什么

    更新: 那么,这是否意味着要使AWS标识池对未经身份验证的访问保持禁用状态,我需要创建一个IAM帐户,该帐户具有仅访问该标识池的权限,并将其凭据存储在移动应用程序中?只是为了让我的移动应用程序能够对最终用户进行身份验证。
    如果确实是这样的话,有没有好的解决方案可以将访问密钥存储在移动应用程序中,从而阻止大部分廉价的反向工程?如果访问密钥存储在移动应用程序中,那么这真的比未经身份验证就离开身份池提供了更多的安全性吗?

    我找到了一个不需要调用以下命令的解决方案

  • 盖蒂
  • GetOpenIdToken
  • 假设身份
  • 取而代之的是

    var awsCredentials = new CognitoAWSCredentials(
        "Identity Pool ID",
        AWSConfigs.RegionEndpoint);
    awsCredentials.AddLogin("accounts.google.com", token);
    

    另请参阅其中解释了如何将Cognito联合到Google。

    我找到了一个不需要调用以下命令的解决方案

  • 盖蒂
  • GetOpenIdToken
  • 假设身份
  • 取而代之的是

    var awsCredentials = new CognitoAWSCredentials(
        "Identity Pool ID",
        AWSConfigs.RegionEndpoint);
    awsCredentials.AddLogin("accounts.google.com", token);
    
    另请参见解释如何将Cognito联合到Google