Я развернул 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 после нажатия кнопки «Войти».
Это все для меня новость, пожалуйста, сообщите.