Тайм-аут входа Cognito UserPool на Android - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь использовать Cognito для аутентификации пользователей в моем приложении для Android. Я создал UserPool (с отключенным mfa) и приложение. Регистрация и подтверждение работают нормально из приложения, поэтому я предполагаю, что само сетевое соединение в порядке, но вход не выполняется

Это код, который я использую для входа:

AuthenticationHandler authenticationHandler = new AuthenticationHandler() {

    @Override
    public void onSuccess(CognitoUserSession cus, CognitoDevice cd) {
        // do something
    }

    @Override
    public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
        AuthenticationDetails authenticationDetails = new AuthenticationDetails(p.getUserName(), p.getPassword(), null);
        authenticationContinuation.setAuthenticationDetails(authenticationDetails);
        authenticationContinuation.continueTask();
    }

    @Override
    public void getMFACode(MultiFactorAuthenticationContinuation multiFactorAuthenticationContinuation) {

    }

    @Override
    public void onFailure(Exception exception) {
        LOG.log(Level.SEVERE, "Failure of Login", exception);
    }

    @Override
    public void authenticationChallenge(ChallengeContinuation cc) {

    }
};
user = userPool.getCurrentUser();
user.getSessionInBackground(authenticationHandler);

Сбой через пару секунд с приведенным ниже исключением. Вызывается метод getAuthenticationMethod, остальные методы (как и следовало ожидать, getMFACode и authenticationChallenge):

01-25 16:55:35.806  8218  8218 E AndroidMain: com.amazonaws.AmazonClientException: Unable to execute HTTP request: timeout
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:441)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:212)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.services.cognitoidentityprovider.AmazonCognitoIdentityProviderClient.invoke(AmazonCognitoIdentityProviderClient.java:5203)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.services.cognitoidentityprovider.AmazonCognitoIdentityProviderClient.respondToAuthChallenge(AmazonCognitoIdentityProviderClient.java:4145)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.respondToChallenge(CognitoUser.java:2273)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.startWithUserSrpAuth(CognitoUser.java:2334)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.initiateUserAuthentication(CognitoUser.java:772)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.AuthenticationContinuation$1.run(AuthenticationContinuation.java:100)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at java.lang.Thread.run(Thread.java:784)
01-25 16:55:35.806  8218  8218 E AndroidMain: Caused by: java.net.SocketTimeoutException: timeout
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.Okio$3.newTimeoutException(Okio.java:212)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.AsyncTimeout.exit(AsyncTimeout.java:261)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:215)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:306)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:300)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:186)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:127)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:737)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:609)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:471)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseMessage(HttpURLConnectionImpl.java:534)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseMessage(DelegatingHttpsURLConnection.java:109)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseMessage(HttpsURLConnectionImpl.java:26)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.http.UrlHttpClient.createHttpResponse(UrlHttpClient.java:92)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.http.UrlHttpClient.execute(UrlHttpClient.java:85)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:371)
01-25 16:55:35.806  8218  8218 E AndroidMain:   ... 8 more
01-25 16:55:35.806  8218  8218 E AndroidMain: Caused by: java.net.SocketException: socket is closed
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:551)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.Okio$2.read(Okio.java:136)
01-25 16:55:35.806  8218  8218 E AndroidMain:   at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:211)
01-25 16:55:35.806  8218  8218 E AndroidMain:   ... 23 more

Используемые версии API-интерфейсов aws:

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-android-sdk-core</artifactId>
        <version>2.11.0</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-android-sdk-cognitoidentityprovider</artifactId>
        <version>2.11.0</version>
    </dependency>

В чем может быть причина этого?

1 Ответ

0 голосов
/ 26 января 2019

Я решил проблему, протестировав API JavaScript.Аутентификация также не удалась, но объект ошибки дал мне подробное сообщение, почему возникла проблема.Проблема была в лямбда-срабатывании после аутентификации.Эта лямбда не удалась.После удаления рассматриваемой лямбды аутентификация сработала.

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