Как получить параметры пользователя с помощью веб-интерфейса Amazon Cognito - PullRequest
0 голосов
/ 24 мая 2018

Недавно я использовал аналогичный шаблон регистрации и входа этот , разработанный Владимиром Будиловым.

Но теперь я модифицировал свое приложение для использования размещенного на нем хоста.Пользовательский интерфейс, разработанный Amazon.Таким образом, мое приложение перенаправляет на размещенный пользовательский интерфейс, все аутентификации выполняются там, и они посылают мне токен аутентификации, более того, как объяснено в этом руководстве.

Подводя итог, я называю размещенныйПользовательский интерфейс и логин: https://my_domain/login?response_type=token&client_id=my_client_id&redirect_uri=https://www.example.com

Я перенаправлен на: https://www.example.com/#id_token=123456789tokens123456789&expires_in=3600&token_type=Bearer

Итак, у меня теперь есть token_id, но я не могу получить текущий пользователь или параметры пользователя из этого,Может ли кто-нибудь помочь мне с информацией или некоторыми направлениями?

Я пробовал методы в Руководство разработчика Amazon .

Это хорошо работает, когда я использовал шаблон Владимира Будилова, нопытаюсь использовать token_id, у меня ничего не получается.Заранее спасибо за ваше время и помощь.

var data = {
    UserPoolId : '...', // Your user pool id here
    ClientId : '...' // Your client id here
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(data);
var cognitoUser = userPool.getCurrentUser();

if (cognitoUser != null) {
    cognitoUser.getSession(function(err, session) {
        if (err) {
           alert(err);
            return;
        }
        console.log('session validity: ' + session.isValid());

        AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId : '...' // your identity pool id here
            Logins : {
                // Change the key below according to the specific region your user pool is in.
                'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>' : session.getIdToken().getJwtToken()
            }
        });

        // Instantiate aws sdk service objects now that the credentials have been updated.
        // example: var s3 = new AWS.S3();

    });
}

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вот конкретный пример того, как проанализировать параметры обратного вызова и настроить сеанс пользователя.Это может быть инициировано на onLoad вашей страницы.

import { CognitoAuth } from 'amazon-cognito-auth-js';

const authData = {
    ClientId : '<TODO: add ClientId>', // Your client id here
    AppWebDomain : '<TODO: add App Web Domain>',
    TokenScopesArray : ['<TODO: add scope array>'], // e.g.['phone', 'email', 'profile','openid', 'aws.cognito.signin.user.admin'],
    RedirectUriSignIn : '<TODO: add redirect url when signed in>',
    RedirectUriSignOut : '<TODO: add redirect url when signed out>',
    IdentityProvider : '<TODO: add identity provider you want to specify>', // e.g. 'Facebook',
    UserPoolId : '<TODO: add UserPoolId>', // Your user pool id here
    AdvancedSecurityDataCollectionFlag : '<TODO: boolean value indicating whether you want to enable advanced security data collection>', // e.g. true
        Storage: '<TODO the storage object>' // OPTIONAL e.g. new CookieStorage(), to use the specified storage provided
};
const auth = new CognitoAuth(authData);
auth.userhandler = {
    onSuccess: function(result) {
        alert("Sign in success");
        showSignedIn(result);
    },
    onFailure: function(err) {
        alert("Error!");
    }
};

const curUrl = window.location.href;
auth.parseCognitoWebResponse(curUrl);

Теперь вы "вошли в систему" в том, что касается клиента Cognito JS, и вы можете использовать getCurrentUser(), getSession()и т. д. `См." Вариант использования 2 " здесь для получения дополнительной информации / контекста.

0 голосов
/ 24 мая 2018

Атрибуты, которые вы настраиваете для добавления в качестве утверждений, уже доступны внутри id_token с кодировкой base64 (поскольку это токен JWT).

Вы можете декодировать токен и обращаться к этим атрибутам как на стороне клиента, используя Javascriptи на сервере.

Для получения дополнительной информации см. вопрос StackOverflow Как декодировать токены JWT в JavaScript .

Примечание. Если вам необходимо доверять этим атрибутам для внутренней операцииубедитесь, что вы проверили подпись JWT, прежде чем доверять атрибутам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...