我在这里有点困惑,我正在开发一个带有PHP后端的Android应用程序。我使用其他AWS库来完成大部分任务,但我保留了后端的事务等。我使用retrofit来处理PHP api调用和响应。我在这里很困惑,有什么方法可以确定用户使用PHP向我的Web API发出请求的认知身份ID吗?使用API网关我将只能限制登录用户的访问权限,但确定他们的身份是接收器API对我来说非常困惑。
更新: 我不希望在任何一个术语中使用API网关。大多数时间请求超时都是错误的。服务器为当前情况提供了更好的性能。
任何线索或帮助都将非常感激。
答案 0 :(得分:1)
由于您已拥有用户数据库,因此您需要使用" developer" Cognito中的身份。
您需要创建一个"标识池"在联邦身份"联邦身份" Cognito部分。
从那里注册一个" Custom"身份验证提供程序..基本上它是一个字符串,您将用户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}
]
]);