Как использовать AWS Cognito с веб-федерации и JavaScript - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь использовать AWS Cognito вместе с провайдером идентификации (вход с помощью amazon), чтобы обеспечить функциональность входа в систему для моего приложения javascript. После долгих поисков, я должен спросить вас, ребята: можете ли вы указать мне хороший учебник, который описывает шаги? Я знаю, что там много документации, но либо документация неполная, либо документация без использования cognito. То, что у меня пока есть:

  • Я зарегистрировал заявку
  • Я создал пул удостоверений с идентификатором приложения, полученным из (1)

Я попробовал следующее, чтобы создать кнопку входа с функциональностью, но это не работает:

<!DOCTYPE html>
<html>
    <head>
        <script src="aws-sdk.js" type="text/javascript"></script>
        <script>
            // Initialize the Amazon Cognito credentials provider
            AWS.config.region = 'eu-west-1'; // Region
            AWS.config.credentials = new AWS.CognitoIdentityCredentials({
                IdentityPoolId: 'xxx',
            });

        </script>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>TODO write content</div>
        <a href id="LoginWithAmazon">
            <img border="0" alt="Login with Amazon"
                 src="https://images-na.ssl-images-amazon.com/images/G/01/lwa/btnLWA_gold_156x32.png"
                 width="156" height="32" />
        </a>
<script>
document.getElementById('LoginWithAmazon').onclick = function() {
    options = { scope : 'profile' };
    amazon.Login.authorize(options, 'MY_REDIRECT_URL');
    return false;
  };
</script>
    </body>
</html>

Я не получаю перенаправление и не вижу всплывающее окно входа в систему. Заранее спасибо.

1 Ответ

0 голосов
/ 04 ноября 2018

Вы упомянули в своем вопросе, что хотели бы предоставить приложению функцию входа в систему с помощью Amazon Cognito.

Amazon Cognito поддерживает два предмета, оба из которых сильно отделены от природы:

  • Пулы пользователей
  • Идентификационные бассейны

Пулы пользователей позволяют добавлять аутентификацию в ваше веб-приложение или мобильное приложение, в то время как пулы идентификации предоставляют проверенным / непроверенным пользователям доступ к набору ресурсов AWS, как указано в роли IAM в настройках пула идентификаторов. Cognito Identity Pools не служит в качестве аутентификатора, но вместо этого он служит авторизатором и передает временные учетные данные AWS после выполнения вызова API get-credentials-for-identity в серверной части.

Исходя из того, что я понимаю из вашего сценария использования, вы хотели бы, чтобы в вашем веб-приложении JavaScript была кнопка «Войти через Amazon», которая перенесет вас на веб-страницу после успешной проверки JWT [1]. Для достижения этого варианта использования необходимо использовать Amazon Cognito User Pools. Во-первых, вам нужно будет интегрировать Amazon в качестве поставщика удостоверений в созданный пул пользователей [2]. После этого вам нужно упомянуть то же самое в вашем коде, инициируя объект аутентификации для вашего пула пользователей:

 function initCognitoSDK() {
        var authData = {
            ClientId : '<TODO: your app client ID here>', // Your client id here
            AppWebDomain : '<TODO: your app web domain here>', // Exclude the "https://" part. 
            TokenScopesArray : <TODO: your scope array here>, // like ['openid','email','phone']...
            RedirectUriSignIn : '<TODO: your redirect url when signed in here>',
            RedirectUriSignOut : '<TODO: your redirect url when signed out here>',
            IdentityProvider : '<TODO: your identity provider you want to specify here>', 
                    UserPoolId : '<TODO: your user pool id here>', 
                    AdvancedSecurityDataCollectionFlag : <TODO: boolean value indicating whether you want to enable advanced security data collection>
        }; 

При разработке приложения вы можете обратиться к этому примеру приложения [3], так как он имеет тот же вариант использования.

Надеюсь, этот ответ поможет вам.

Ссылки

[1]. https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html

[2]. https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-social-idp.html

[3]. https://github.com/aws/amazon-cognito-auth-js/tree/master/sample

...