Обновление Cognito IDToken с использованием RefreshToken - PullRequest
0 голосов
/ 11 апреля 2019

Привет, я разработчик приложений для Android, я использую механизм аутентификации cognito для мобильного приложения. Как только я аутентифицирую своего пользователя, я получаю RefreshToken и IDToken. Согласно Amazon Cognito, срок его действия истекает IDToken ровно через час. Я пытаюсь снова заставить мой сеанс получить токен, и вот как я пытаюсь это сделать.

    String poolId       = 'xxxxxx';
    String clientId     = 'xxxxxx';
    String clientSecret = 'xxxxxx';

    CognitoUserPool userPool = new CognitoUserPool(context, poolId, clientId, clientSecret,Regions.EU_WEST_1);
    CognitoUser user = userPool.getUser();

    user.getSessionInBackground(new AuthenticationHandler() {

        @Override
        public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) {
            String idToken = userSession.getIdToken().getJWTToken();

            Map<String, String> logins = new HashMap<String, String>();
            logins.put("cognito-idp." + Constants.REGION + ".amazonaws.com/" + Constants.UserPool, userSession.getIdToken().getJWTToken());

            credentialsProvider.setLogins(logins);
            credentialsProvider.refresh();
        }

        @Override
        public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
            Log.i("MQTT","Detail");
        }

        @Override
        public void getMFACode(MultiFactorAuthenticationContinuation continuation) {
            Log.i("MQTT","MFACode");
        }

        @Override
        public void authenticationChallenge(ChallengeContinuation continuation) {
            Log.i("MQTT","Challenge");
        }

        @Override
        public void onFailure(Exception exception) {
            Log.i("MQTT","Fail");
        }
    });

У меня есть userpoolid, и мне нужно знать, откуда я могу получить clientID и clientSecret. Так что я получаю данные в onSuccess обратном вызове и получаю IDToken.

Действительно благодарен, если кто-то может помочь. Спасибо

1 Ответ

0 голосов
/ 11 апреля 2019
  • Перейдите в пул пользователей в Cognito и нажмите на пул, который вы хотите работа над.

  • В общих настройках нажмите на клиенты приложений.

  • Теперь нажмите на добавление клиента приложения.

  • Дайте вашему приложению имя

  • Убедитесь, что выбран Генерировать секрет клиента .

  • Нажмите на создание клиентского приложения.

Теперь вы можете записать идентификатор клиента и секрет клиента.

Документы: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html

...