Я пытаюсь создать простой статический веб-сайт, который использует AWS Cognito для аутентификации пользователей. Это означает, что я не использую какие-либо расширенные библиотеки, но основываю свой код на примере AWS здесь .
Если я использую поток «токенов» по умолчанию, то этот пример работает для моего домена. Однако в соответствии с рекомендациями самих Amazon в нескольких местах, например, здесь Я хочу использовать поток «предоставления кода», а в качестве состояния в приведенном выше примере я просто раскомментирую строку 221:
auth.useCodeGrantFlow();
Однако из-за этого не удается вызвать функцию onFailure
, хотя странным образом я вижу строку URL, содержащую code=xxxxx
. Похоже, мне нужно сделать больше шагов, но все примеры, которые я нашел, демонстрируют менее благоприятный «поток токенов».
Это мой конкретный index.html
на основе приведенного выше примера:
<code><!DOCTYPE html>
<html lang="en-US">
<head>
<title>Cognito Auth JS SDK Sample</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="stylesheets/styleSheetStart.css">
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="dist/amazon-cognito-auth.min.js"></script>
<!-- To enable the advanced security feature -->
<!-- <script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js">
</script> -->
<!-- E.g. -->
<!-- <script src="https://amazon-cognito-assets.us-east-1.amazoncognito.com/amazon-cognito-advanced-security-data.min.js">
</script> -->
</head>
<body onload="onLoad()">
<ul>
<li><a href="https://aws.amazon.com/cognito/" target="_blank"
title="Go to AWS Cognito Console">Cognito Console</a></li>
<li><a href="http://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html"
target="_blank" title="See Cognito developer docs">Docs</a>
</li>
</ul>
<h1>
<a href="http://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html" target="_blank">
<img src="img/MobileServices_AmazonCognito.png" alt="Amazon Cognito" title="Amazon Cognito"
style="width:144px;height:144px;"></a><br>
Amazon Cognito Auth Demo
</h1>
<!--removed for brevity -->
<div><br></div>
<div>
<p id="statusNotAuth" title="Status">
Sign-In to Continue
</p>
<p id="statusAuth" title="Status">
You have Signed-In
</p>
</div>
<div class="tabsWell">
<div id="startButtons">
<div class="button">
<a class="nav-tabs" id="signInButton" href="javascript:void(0)" title="Sign in">Sign In</a>
</div>
</div>
<div class="tab-content">
<div class="tab-pane" id="userdetails">
<p class="text-icon" title="Minimize" id="tabIcon" onclick="toggleTab('usertab');">_</p>
<br>
<h2 id="usertabtitle">Tokens</h2>
<div class="user-form" id="usertab">
<pre id="idtoken"> ...
...
...
// Операции при загрузке веб-страницы.
function onLoad () {
var i, элементы, вкладки;
items = document.getElementsByClassName ("tab-pane");
для (i = 0; i ', // Ваш идентификатор клиента здесь
AppWebDomain: '', // Исключить часть "https://".
TokenScopesArray: [], // как ['openid', 'email', 'phone'] ...RedirectUriSignIn: '<домен удален> /index.html',
RedirectUriSignOut: '<домен удален> /index.html'
};
var auth = new AmazonCognitoIdentity.CognitoAuth (authData);
// Вы также можете установить параметр состояния - мне нужно установить это?
auth.setState ( 'ABCDXYZ');
auth.userhandler = {
onSuccess: функция (результат) {
alert («Войти в систему»);
showSignedIn (результат);
},
onFailure: function (err) {
alert («Ошибка!» + ошибка);
}
};
// типом ответа по умолчанию является «токен», раскомментируйте следующую строку, чтобы сделать его «кодом».
auth.useCodeGrantFlow ();
вернуть авторизацию;
}
В инструментах разработчика я вижу вызов https://<domain-name-removed>/oauth2/token
, но похоже, что он возвращается с ошибкой 400. Текст ответа "error":"invalid_client"
.
Есть ли какая-то дополнительная конфигурация, которую мне нужно сделать, или как предложено в документации AWS для потока предоставления кода авторизации, мне нужно реализовать дополнительный код BE? Я чувствую, что коду примера не хватает полного описания потока предоставления кода.
Согласно