[英]Cognito UserPool signin timeout on Android
I'm trying to use Cognito for authenticating users in my Android app. 我正在尝试使用Cognito对我的Android应用程序中的用户进行身份验证。 I created a UserPool (with mfa disabled) and an app.
我创建了一个UserPool(禁用了MFA)和一个应用。 Signup and confirmation works fine from the app, so I would assume the network connection itself is OK, but the signin fails.
注册和确认可以从该应用程序正常工作,因此我认为网络连接本身正常,但登录失败。
This is the code I'm using for the signin: 这是我用于登录的代码:
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);
This fails after a couple of seconds with the Exception below. 几秒钟后,以下失败将导致失败。 The getAuthenticationMethod is called, the other methods (getMFACode and authenticationChallenge aren't, as I would have expected):
调用了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
Used versions of aws APIs: 使用过的aws API版本:
<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>
What could be the reason for this? 这可能是什么原因?
I solved the issue by testing with the JavaScript API. 我通过使用JavaScript API进行测试解决了该问题。 Authentication also failed, but the error object gave me a detailed message why the issue occurred.
身份验证也失败了,但是错误对象给了我一条详细的消息,说明问题发生的原因。 The problem was a lambda triggered post-authentication.
问题是lambda触发了身份验证。 This lambda failed.
此lambda失败。 After removing the lambda in question, authentication worked.
删除有问题的lambda之后,身份验证就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.