首页 > 解决方案 > 尝试在 AWS Cognito 中对用户进行身份验证时出现 OperationCanceledException

问题描述

我正在玩 AWS Cognito,我正在尝试从我的 API 后端对用户进行身份验证。

但我收到“操作已取消”。例外,我不知道为什么!

这是我的代码:

 var authReq = new AdminInitiateAuthRequest()
 {
     UserPoolId = this.UserpoolId,
     ClientId = this.ClientId,
     AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH
 };
 authReq.AuthParameters.Add("USERNAME", username);
 authReq.AuthParameters.Add("PASSWORD", password);

 try
 {
     AdminInitiateAuthResponse authResp = await 
     this.SecClient.AdminInitiateAuthAsync(authReq);
 }
 catch(Exception e)
 {
     //The operation was canceled exception
 }

我的堆栈跟踪

在 System.Net.Http.HttpClient.HandleFinishSendAsyncError(异常 e,CancellationTokenSource cts)\r\n 在 System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(任务1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)\r\n at System.Net.Http.HttpClient.GetStringAsyncCore(Task1 getTask)\r\n 在 Amazon.Runtime.Internal.Util.AsyncHelpers .<>c__DisplayClass1_11.<<RunSync>b__0>d.MoveNext()\r\n --- End of stack trace from previous location where exception was thrown ---\r\n at Amazon.Runtime.Internal.Util.AsyncHelpers.ExclusiveSynchronizationContext.BeginMessageLoop() in D:\\JenkinsWorkspaces\\trebuchet-stage-release\\AWSDotNetPublic\\sdk\\src\\Core\\Amazon.Runtime\\Internal\\Util\\_mobile\\AsyncHelpers.cs:line 142\r\n at Amazon.Runtime.Internal.Util.AsyncHelpers.RunSync[T](Func1 个任务)在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Internal\Util\_mobile\AsyncHelpers.cs:line 87\r\n 在 Amazon.Util.AWSSDKUtils。在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Util\AWSSDKUtils.cs:line 1008\r\n 在 Amazon.Util 中下载StringContent(Uri uri,TimeSpan 超时,IWebProxy 代理)。 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Util\_bcl+netstandard\EC2InstanceMetadata.cs:line 513\r\ 中的 EC2InstanceMetadata.GetItems(String relativeOrAbsolutePath, Int32 尝试, Boolean slurp) n 在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Util\_bcl+netstandard\EC2InstanceMetadata.cs:line 311 中的 Amazon.Util.EC2InstanceMetadata.get_IAMSecurityCredentials() 处\r\n亚马逊。Runtime.DefaultInstanceProfileAWSCredentials.FetchCredentials() 在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\_bcl+netstandard\DefaultInstanceProfileAWSCredentials.cs:line 142\r\n 在 Amazon。 Runtime.DefaultInstanceProfileAWSCredentials.GetCredentials() 在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\_bcl+netstandard\DefaultInstanceProfileAWSCredentials.cs:line 88\r\n 在 Amazon。 Runtime.DefaultInstanceProfileAWSCredentials.GetCredentialsAsync() 在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\_bcl+netstandard\DefaultInstanceProfileAWSCredentials.cs:line 106\r\n 在 Amazon。 Runtime.Internal.CredentialsRetriever。InvokeAsync[T](IExecutionContext executionContext) 在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CredentialsRetriever.cs:line 90\r\n 在 Amazon.Runtime .Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)\r\n 在 D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\ 中的 Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext) src\Core\Amazon.Runtime\Pipeline\RetryHandler\RetryHandler.cs:第 137 行\r\n 在 Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)\r\n 在 Amazon.Runtime.Internal。 CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)\r\n 在 Amazon.Runtime.Internal.ErrorCallbackHandler。InvokeAsync[T](IExecutionContext executionContext)\r\n 在 Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)\r\n 在 KaiserSmith.MS.Security.AWSCognitoAdapter.UserLogin(字符串用户名,字符串密码)在 C:\Users\Jason\Dropbox\Development\KaiserSmith.MS\BundleShared\Security\AWSCognitoAdapter.cs:line 83" 字符串

标签: c#.net-coreamazon-cognito

解决方案


我自己设法解决了这个问题。正如弗拉基米尔在回答中指出的那样,我首先开始研究网络错误。我已经排除了本地机器上的防火墙问题,所以几个小时后我从不同的机器上尝试了同样的问题。

我尝试用谷歌搜索类似的问题,但都没有运气。但经过大量调查后,我最终找到了原因,尽管该异常似乎具有误导性。在我的谷歌搜索中,我遇到了其他以不同方式启动客户端的示例,所以我尝试了这个和宾果游戏!

所以我改变了这个:

this.SecClient = new AmazonCognitoIdentityProviderClient(Amazon.RegionEndpoint.EUCentral1);

成为这个

this.SecClient = new AmazonCognitoIdentityProviderClient(myAwsAccesskey, myAwsSecret,  Amazon.RegionEndpoint.EUCentral1);

这似乎已经解决了这个问题!


推荐阅读