我正在使用AWS Javascript API并尝试获取指定的cognito id:
AWS.config.credentials.get(function(err) {
if (!err) {
console.log("Cognito Identity Id: " + AWS.config.credentials.identityId);
}
});
Run Code Online (Sandbox Code Playgroud)
为什么这会导致下面的消息出现400错误?
{"__type":"InvalidIdentityPoolConfigurationException","message":"Invalid identity pool configuration. Check assigned IAM roles for this pool."}
Run Code Online (Sandbox Code Playgroud)
我为经过身份验证和未经身份验证的用户配置了IAM角色.
{
"Version": "2012-10-17",
"Statement": [{
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Effect": "Allow",
"Resource": [
"*"
]
}]
}
Run Code Online (Sandbox Code Playgroud) 我将使用AWS Cognito User Pool产品作为应用程序的用户目录,并有几个问题:
如何查询确认已确认但email_verified为false的用户的电子邮件?
该场景大致是代理人代表他们注册用户,我通过管理员电话adminConfirmSignUp确认用户.此时,由于email_verified标志为false,用户无法更改其密码.
我无法调用resendConfirmationCode,因为用户已经确认.
我无法调用forgotPassword,因为email_verified标志为false.
我能想到的最好的方法是删除用户帐户并调用signUp(提示他们重新输入密码或新密码),从而重新创建帐户.
我创建了一个用户池和标识池.
我用过javascript sdk.
我可以使用javascript sdk注册,发送确认码并确认用户成功.
但是,当我尝试使用身份验证方法登录用户并尝试使用下面的代码传递idToken时,使用"CognitoIdentityCredentials"获取凭据
logins[cognitoEndpoint + "/" + userPoolId] = jwtToken;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: identityPoolId,
Logins: logins
});
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误
Error: Invalid identity pool configuration. Check assigned IAM roles for this pool.
at Request.extractError (aws-sdk.js:104063)
at Request.callListeners (aws-sdk.js:106060)
at Request.emit (aws-sdk.js:106034)
at Request.emit (aws-sdk.js:105121)
at Request.transition (aws-sdk.js:104843)
at AcceptorStateMachine.runTo (aws-sdk.js:108480)
at aws-sdk.js:108492
at Request.<anonymous> (aws-sdk.js:104859)
at Request.<anonymous> (aws-sdk.js:105123)
at Request.callListeners (aws-sdk.js:106070)
Run Code Online (Sandbox Code Playgroud)
我已授予管理员访问身份池的"未经身份验证的角色"和"未经身份验证的角色"以及我正在使用其凭据的用户的权限.
我是新来的.谁能告诉我我错过了什么?
任何帮助,将不胜感激.
javascript amazon-web-services angularjs amazon-cognito aws-sdk
我原本以为这个问题是由于区域不匹配造成的,但是在更改区域之后,我在尝试在此处找到的Amazon AWS示例时仍然会遇到以下错误:
AmazonServiceException: User: arn:aws:sts::[My Account
ARN]:assumed-role/Cognito_AndroidAppUnauth_DefaultRole/ProviderSession
is not authorized to perform: dynamodb:DescribeTable on resource:
arn:aws:dynamodb:us-east-1:[My Account ARN]:table/test_table (Service:
AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException;
Request ID: BBFTS0Q8UHTMG120IORC2KSASVVV4KQNSO5AEMVJF66Q9ASUAAJG)
Run Code Online (Sandbox Code Playgroud)
一切都或多或少相同,我改变的唯一事情就是将DBclient区域更改US_EAST_1为托管我的测试表的位置,并使用通过以下生成的"Amazon Cognito Starter Code"页面中的信息修改Constants文件Cognito入门文档.
对于我的Cognito_AndroidAppUnauth_DefaultRole角色策略,我修改了默认的移动分析和同步服务权限,还包括对所有表的所有操作的访问权限,无论是否存在:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CognitoPolicy",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Effect": "Allow",
"Resource": [
"*"
]
},
{
"Sid": "DynamoDBPolicy",
"Effect": "Allow",
"Action": [
"dynamodb: *"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么在使用正确的区域并且Unauth策略应该允许表访问时它声称它没有权限?
编辑:在DynamoDB资源(创建表)上调用方法时的Stacktrace,它是否有用
com.amazonaws.AmazonServiceException: …Run Code Online (Sandbox Code Playgroud) android amazon-web-services amazon-dynamodb amazon-iam amazon-cognito
我在AWS Cognito服务中有一个经过身份验证的用户,并希望将其唯一标识符存储在数据库中.我应该存储用户的用户名(这是他的电话号码)还是他的"子"(这是他的uid)?所有Amazon API函数(如AdminGetUser)都使用"username"参数,但不使用sub/uid.
但我也读过那篇文章,作者说"总是生成关于'sub'声明的价值的政策,而不是'用户名',因为用户名是可重新分配的.Sub是用户的UUID,永远不会被重新分配给另一个用户."
所以,现在我犹豫了我必须用作唯一用户标识符 - "username"或"sub"
谢谢.
我正在尝试使用浏览器中的Web套接字连接到AWS IoT.
我试过这个例子:https: //github.com/awslabs/aws-iot-examples/tree/master/mqttSample
另一个有点修改,因此它可以与Cognito Identity Pool登录用户一起使用. https://github.com/dwyl/learn-aws-iot/blob/master/src/js/utils/request.js#L27
如果我使用具有有效IoT策略的IAM用户,我可以成功连接,但如果我使用用户凭据,则会收到"101 Switching Protocols"响应,但随后会关闭.
与经过身份验证的用户关联的IAM角色是正确的,我可以签署请求并执行其他私有操作,如调用APIG端点.套接字连接也没有响应403.所以它可能不是权限问题.
还有什么呢?
Cognito Console中的标识池在哪里.如文档中所述,它具有以下格式:
IdentityPoolId
标识为REGION:GUID的标识池标识.
但我只看到Pool Id并Pool ARN在控制台中.哪种格式不同.
我创建了一个用户池和设置域,其中包含应用客户端设置()以主持注册并在cognito本身登录页面.当我尝试使用类似于的网址 -
在浏览器中我被重定向到
https://myDomain.auth.us-east-1.amazoncognito.com/error?error=invalid_request#
注意:我尝试使用Cognito用户池和Facebook身份提供商,但未启用OAuth2.
我错过了什么吗?
AWS提供cognito,为开发人员提供注册和登录功能,包括与OpenId兼容身份提供商(如facebook,google等)的联合.
cognito开发者控制台中有两种类别.这些是管理用户池和管理联合身份.
我只是有点困惑,因为两者非常相似,即使我们想要提供我们的客户登录他们的Facebook帐户.cognito用户池本身提供联合身份验证和联合身份池,也由身份验证提供程序提供.
问题是,如果我想允许我的客户使用自己的Facebook帐户登录,我应该使用哪些类别?用户池或联合身份?
另外,如果我想在API网关中配置授权器,我必须创建cognito用户池但联合身份池.这是选择认知类别的主要原因吗?
amazon-cognito ×10
aws-cognito ×2
amazon-iam ×1
android ×1
angularjs ×1
aws-iot ×1
aws-sdk ×1
javascript ×1
websocket ×1