Aws Cognito Auth со страницы html с javascript - PullRequest
0 голосов
/ 04 февраля 2020

Я развернул asp. net основное безсерверное приложение на AWS. У меня есть настройка API Gateway. Я могу программно аутентифицировать и извлекать пользовательские токены / навигацию без проблем.

Теперь я подошел к этапу, когда я хотел бы, чтобы пользователь авторизировался со своими данными Cognito и получил доступ к защищенной странице. Я не могу заставить это работать с помощью этого метода.

Я использую простой скрипт, который нашел:

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="utf-8">

    <!-- Javascript SDKs-->
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="https://sdk.amazonaws.com/js/aws-sdk-2.7.16.min.js"></script>
    <script src="amazon-cognito-identity.min.js"></script>
    <script src="config.js"></script>

</head>
<body>
<form>
    <h1>Please sign in</h1>

    <input type="text" id="inputUsername" placeholder="Email address" name="username" required autofocus>
    <input type="password" id="inputPassword" placeholder="Password" name="password" required>
    <button type="button" onclick="signInButton()">Sign in</button>

</form>


<script>

    function signInButton() {

        var authenticationData = {
            Username: document.getElementById("inputUsername").value,
            Password: document.getElementById("inputPassword").value,
        };

        var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);

        var poolData = {
            UserPoolId: _config.cognito.userPoolId, // Your user pool id here
            ClientId: _config.cognito.clientId, // Your client id here
        };

        var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);

        var userData = {
            Username: document.getElementById("inputUsername").value,
            Pool: userPool,
        };

        var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);

        cognitoUser.authenticateUser(authenticationDetails, {
            onSuccess: function (result) {
                var accessToken = result.getAccessToken().getJwtToken();
                console.log(accessToken);
            },

            onFailure: function (err) {
                alert(err.message || JSON.stringify(err));
            },
        });
    }
</script>
</body>
</html>

Где config. js:

window._config = {
    cognito: {
        userPoolId: 'us-east-2_xxx',
        region: 'us-east-2', 
		clientId: 'xxxx'
    },
};

Startup.cs ConfigureServices

 services.AddAuthentication("Bearer")
    .AddJwtBearer(options =>
            {
                options.Audience = "APPCLIENTIDHERE";
                options.Authority = "https://cognito-idp.ap-southeast-2.amazonaws.com/POOLIDHERE";
            });

Я получал при просмотре сетевых журналов: имя вызова PASSWORD_VERIFIER после нажатия кнопки «Войти».

Это все для меня новость, пожалуйста, сообщите.

...