【问题标题】:Verify Cognito identity in PHP backend API在 PHP 后端 API 中验证 Cognito 身份
【发布时间】:2017-05-27 00:35:38
【问题描述】:

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

更新: 我不希望在任何术语中使用 API 网关。大多数时候请求超时都是错误的。服务器为当前情况提供更好的性能。

任何线索或帮助将不胜感激。

【问题讨论】:

  • 我将 cognito 用于我的公司浏览器和移动应用程序。你已经有一个用户数据库了吗?还是您会使用 cognito 来存储您的用户数据?
  • 我在 dynamodb 中有用户数据库。

标签: php android amazon-cognito


【解决方案1】:

由于您已经拥有一个用户数据库,因此您需要在 Cognito 中使用“开发者”身份。

您需要在 Cognito 的“Federated Identites”部分创建一个“Identity Pool”。

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

然后您将使用 CogintoIdentity->getOpenIdTokenForDeveloperIdentity() 方法在亚马逊登录您的用户。

您将收到一个 IdentityID 和一个 OpenID 会话令牌,您可以将其发送到 STS 以获取 AWS API 的临时凭证...您还可以使用这个新身份创建与 CognitoSync 身份关联的数据集

$cognitoIdentityClient->getOpenIdTokenForDeveloperIdentity([
    'IdentityPoolId'=>'Your Pool ID',
     'Logins'=>[
          'your.custom.provider.string'=>'YOUR USER ID'
      ]
 ]);

编辑: 获得 IdentityId 后... 在我的移动应用程序中,我使用自定义 HTTP 标头通过 IdentityId 和用户 ID 发送,并使用“lookupDeveloperIdentity”方法在服务器端验证用户。

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

【讨论】:

  • 我已经在 android 端这样做了。我已经注册了身份提供者并创建了用户身份。现在我想识别正在向 PHP 发出发布请求以获取其有效身份 ID 的用户。我需要将什么传递给 POST 请求才能从 cognito 获取他们的身份?猜猜它是 openID 令牌,将尝试并让您知道。 :)
  • 我所做的是在自定义 HTTP 标头中添加身份 ID 和用户 ID.....然后我使用方法“lookupDeveloperIdentity”来验证发送请求的用户
猜你喜欢
  • 2015-12-07
  • 2016-08-20
  • 2018-01-29
  • 1970-01-01
  • 2022-01-01
  • 2022-06-19
  • 2017-10-29
  • 2018-10-08
  • 2020-11-04
相关资源
最近更新 更多