c# - 尝试在 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(Task
1 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](Func
1 个任务)在 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" 字符串
解决方案
我自己设法解决了这个问题。正如弗拉基米尔在回答中指出的那样,我首先开始研究网络错误。我已经排除了本地机器上的防火墙问题,所以几个小时后我从不同的机器上尝试了同样的问题。
我尝试用谷歌搜索类似的问题,但都没有运气。但经过大量调查后,我最终找到了原因,尽管该异常似乎具有误导性。在我的谷歌搜索中,我遇到了其他以不同方式启动客户端的示例,所以我尝试了这个和宾果游戏!
所以我改变了这个:
this.SecClient = new AmazonCognitoIdentityProviderClient(Amazon.RegionEndpoint.EUCentral1);
成为这个
this.SecClient = new AmazonCognitoIdentityProviderClient(myAwsAccesskey, myAwsSecret, Amazon.RegionEndpoint.EUCentral1);
这似乎已经解决了这个问题!
推荐阅读
- python - 内存核心转储 C++
- apache-kafka - 有没有办法使用 Kafka Confluent REST API 生成带有标头的 Kafka 消息?
- vb.net - 当我创建另一个程序副本时如何关闭现有正在运行的程序?
- python - 按文件标题的顺序重命名文件 python
- c - 为什么在 C 中的 if-else 条件中传递 (!NULL) 为真?
- jenkins - 在 Linux 机器上通过 Tomcat 安装 Jenkins 时无法找到 Jenkins 文件
- java - 使用一个字符串变量作为输入
- java - java 服务器使用 SHA256WithRSA 对消息进行签名,但 python 无法验证
- android - 从 AsyncTask 返回 ArrayList
- java - 使用带有 groovy 对方付费电话的 FindAll 机箱时出现问题