在PHP后端API中验证Cognito标识

在PHP后端API中验证Cognito标识,php,android,amazon-cognito,Php,Android,Amazon Cognito,我在这里有点困惑,我正在使用PHP后端开发一个android应用程序。我使用其他AWS库完成大部分任务,但事务等都是我为后端保留的。我使用改型来处理PHPAPI调用和响应。我在这里很困惑,是否有任何方法可以确定使用PHP向我的web API发出请求的用户的cognito标识id?使用API网关,我将能够仅限制登录用户的访问,但确定他们的身份是接收方API对我来说相当混乱 更新: 我不希望在任何情况下使用API网关。请求超时的大部分时间都有问题。服务器为当前情况提供了更好的性能 任何提示或帮助都将

我在这里有点困惑,我正在使用PHP后端开发一个android应用程序。我使用其他AWS库完成大部分任务,但事务等都是我为后端保留的。我使用改型来处理PHPAPI调用和响应。我在这里很困惑,是否有任何方法可以确定使用PHP向我的web API发出请求的用户的cognito标识id?使用API网关,我将能够仅限制登录用户的访问,但确定他们的身份是接收方API对我来说相当混乱

更新: 我不希望在任何情况下使用API网关。请求超时的大部分时间都有问题。服务器为当前情况提供了更好的性能


任何提示或帮助都将不胜感激。

因为您已经有了一个用户数据库,您需要在Cognito中使用“开发者”身份

您需要在Cognito的“联合标识”部分创建一个“标识池”

从那里您可以注册一个“自定义”身份验证提供程序。。基本上,它是一个字符串,您将用户ID与之关联

然后,您将使用CogintoIdentity->getOpenIdTokenForDeveloperIdentity()方法在amazon中登录用户

您将返回一个IdentityID和一个OpenID会话令牌,您可以将其发送到STS以获取AWS API的临时凭据。。。您还可以使用此新标识创建与CognitoSync标识关联的数据集

$cognitoIdentityClient->getOpenIdTokenForDeveloperIdentity([
    'IdentityPoolId'=>'Your Pool ID',
     'Logins'=>[
          'your.custom.provider.string'=>'YOUR USER ID'
      ]
 ]);
编辑: 在获得身份ID后。。。在我的移动应用程序中,我使用自定义HTTP头发送IdentityId和用户ID,并使用“lookupDeveloperIdentity”方法在服务器端验证用户

$cognitoIdentityClient->lookuoDeveloperIdentity([
    'IdentityPoolId'=>'Your Pool ID',
     'DeveloperUserIdentifier'=>'{X_HTTP_USER_ID}',
     'IdentityId'=>{X_HTTP_COGNITO_IDENTITY_ID}
      ]
 ]);

我在公司的浏览器和移动应用程序中使用cognito。你已经有用户数据库了吗?或者你会使用cognito来存储你的用户数据吗?我在dynamodb中有用户数据库。我已经在android端这样做了。我已经注册了身份提供者并创建了用户身份。现在,我想确定向PHP发出post请求以获取其有效身份ID的用户。我需要向post请求传递什么才能从cognito获得他们的身份?我猜这是openID令牌,我会尝试一下并让您知道。:)我要做的是在自定义HTTP头中添加标识ID和用户ID。。。。。然后,我使用“lookupDeveloperIdentity”方法来验证发送请求的用户