PHP 中的 Cognito 用户池身份验证

Cognito User Pool Authentication in PHP

我开发了一个 iOS 和 Android 应用程序,它从发送到 AWS DynamoDB 的汽车收集数据。用户使用 Cognito 用户池通过移动应用程序登录。

现在我想开发一个网页来展示用户的数据。为此,用户必须向网页 (SSL) 提供他的凭据,该网页用于从数据库中检索他的信息。下面的代码运行良好(未显示获得 user/password 的 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>

<script type="text/javascript">
    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);
            },

        });
    }
</script>

但是,javascript 将在客户端 运行 并包含所有需要的 API 和密钥。

我读到 php 是首选,因为一切都将保留在服务器端。 但是,我还没有找到任何指向正确方向的示例或参考资料。

我现在很困惑,因为我不知道如何前进,因为考虑到 JavaScript 中的所有示例及其论坛上的相关评论,亚马逊似乎不建议使用 php :User Pool Authentication using Php

除了 JavaScript 加密来混淆密钥之外,还有什么解决此问题的建议吗?

使用Cognito User pools with Cognito Federated identity service.

Cognito Federated Identity 服务为您的客户提供临时 AWS 凭证,可用于对任何其他 AWS 服务进行身份验证,您可以通过 Federated Identity Pool 角色控制这些服务。您不需要在 JavaScript 应用程序中嵌入您的 AWS 访问密钥和秘密密钥,您将能够安全地与 AWS 服务交互。

可以找到代码示例 here