如何在没有用户凭据的情况下对移动应用程序进行身份验证?

Uğu*_*ürk 5 authentication mobile jwt aws-lambda aws-api-gateway

我有一款与 API 交互的手机游戏。我希望仅从该移动应用程序调用此 API 。它解释起来很简单,但另一方面,它的简单又使它变得混乱

没有用户,因此没有用户凭据。这是一个从 API 请求图像的开放游戏。

我不想实施的事情:

  1. HardcodedSecret/apikey/token 等 -> 没有任何内容必须是硬编码的
  2. One Time Password-> 无需通过短信、电子邮件、推送通知或任何用户交互进行 OTP。
  3. Device IDAdvertising ID -> 好的解决方案,但任何其他应用程序也会获取此 ID,然后调用我的 API。另外,任何攻击者都可以发送任何内容作为设备 ID,对吧?那么如何验证该设备 ID 是否是现有设备的真实标识符呢?

游戏开发与Unity3D. API 由AWS API Gateway和组成Lambda。我正在考虑使用 AWSCognito作为身份验证服务器。

感谢您的想法!

JTu*_*nis 3

我还没有完成这个具体的实现,但我认为你可以做如下的事情:

1) 配置您的 API 网关以使用 IAM 身份验证 ( https://aws.amazon.com/premiumsupport/knowledge-center/iam-authentication-api-gateway/ )

2) 使用 Cognito,您应该配置身份池以允许未经身份验证的用户,并相应地调整 Cognito 未经身份验证的身份的权限(此处的一些信息:https: //docs.aws.amazon.com/cognito/latest/developerguide/identity-池.html

3) 您可以使用 Amplify SDK 检索应用程序中未经身份验证的用户的临时 AWS 凭证并访问您的 API 网关(此处的良好步骤:https ://github.com/aws-amplify/amplify-js/issues/711# issuescomment-414100476以及有关 Amplify 的更多信息: https: //docs.amplify.aws/