我开发了一个iOS和Android应用程序,用于从汽车收集数据并发送到AWS DynamoDB。用户使用Cognito用户池通过移动应用程序登录。
现在我想开发一个网页来展示用户的数据。为此目的,用户必须将他的凭证提供给用于从数据库检索其信息的网页(SSL)。下面的代码运行良好(用于获取用户/密码的html表单未显示):
<script src="jsbn.js"></script>
<script src="jsbn2.js"></script>
<script src="sjcl.js"></script>
<script src="/path/to/moment.min.js"></script>
<script src="aws-cognito-sdk.min.js"></script>
<script src="amazon-cognito-identity.min.js"></script>
<script src="/path/to/aws-sdk-2.3.5.js"></script>
<script src="aws-sdk.js"></script>
<script src="aws-sdk.min.js"></script>
function completeAndRedirect() {
var authenticationData = {
Username : document.getElementById("UserID").value,
Password : document.getElementById("Password").value,
};
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
var poolData = { UserPoolId : 'us-west-.......',
ClientId : '...................'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : 'test',
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
console.log('userid:'+authenticationData.Username);
console.log('pass:'+authenticationData.Password);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log('access token + ' + result.getAccessToken().getJwtToken());
},
onFailure: function(err) {
console.log('test');
alert(err);
},
});
}
但是,javascript将在客户端运行,并包含所有必需的API和密钥。
我读到php是首选的,因为一切都会留在服务器端。 但是,我没有找到任何指示我正确方向的例子或参考文献。
我现在感到困惑,因为我不知道如何继续前进,因为亚马逊似乎并不建议使用PHP给出JavaScript中的所有示例及其论坛上的相关评论:User Pool Authentication using Php
除了JavaScript加密以模糊密钥之外,是否有任何解决此问题的建议?
答案 0 :(得分:0)
Cognito Federated Identity服务会向您的客户端发送临时AWS凭证,这些凭据可用于通过联合身份池角色控制的任何其他AWS服务进行身份验证。您不需要在JavaScript应用程序中嵌入AWS访问和密钥,您将能够安全地与AWS服务进行交互。
可以找到代码示例Cognito User pools with Cognito Federated identity service。