PHP中的Cognito用户池身份验证

时间:2016-10-15 18:56:20

标签: php amazon-web-services amazon-cognito

我开发了一个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加密以模糊密钥之外,是否有任何解决此问题的建议?

1 个答案:

答案 0 :(得分:0)

使用2nd Images

Cognito Federated Identity服务会向您的客户端发送临时AWS凭证,这些凭据可用于通过联合身份池角色控制的任何其他AWS服务进行身份验证。您不需要在JavaScript应用程序中嵌入AWS访问和密钥,您将能够安全地与AWS服务进行交互。

可以找到代码示例Cognito User pools with Cognito Federated identity service