标签: amazon-cognito

无法在Amazon Cognito Userpools中验证客户端的秘密哈希

我陷入了"Amazon Cognito Identity用户池"流程.

我尝试了所有可能的代码来验证cognito用户池中的用户.但我总是得到错误说"错误:无法验证客户端4b*******fd的秘密哈希".

这是代码:

AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:b64bb629-ec73-4569-91eb-0d950f854f4f'
});

AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:b6b629-er73-9969-91eb-0dfffff445d'
});

AWSCognito.config.update({accessKeyId: 'AKIAJNYLRONAKTKBXGMWA', secretAccessKey: 'PITHVAS5/UBADLU/dHITesd7ilsBCm'})

var poolData = { 
    UserPoolId : 'us-east-1_l2arPB10',
    ClientId : '4bmsrr65ah3oas5d4sd54st11k'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);

var userData = {
     Username : 'ronakpatel@gmail.com',
     Pool : userPool
};

var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);

cognitoUser.confirmRegistration('123456', true,function(err, result) {
if (err) {
    alert(err);
    return;
}
console.log('call result: ' + result);
});
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cognito

104
推荐指数
14
解决办法
5万
查看次数

如何更改用户状态FORCE_CHANGE_PASSWORD?

使用AWS Cognito,我想创建虚拟用户以进行测试.

然后,我使用AWS控制台创建此类用户,但用户的状态设置为FORCE_CHANGE_PASSWORD.使用该值,无法对此用户进行身份验证.

有没有办法改变这种状态?

UPDATE从CLI创建用户时的相同行为

amazon-web-services aws-cli amazon-cognito

65
推荐指数
10
解决办法
3万
查看次数

如何在API后端验证来自AWS Cognito的JWT?

我正在构建一个由Angular2单页面应用程序和在ECS上运行的REST API组成的系统.API在.Net/Nancy上运行,但这可能会发生变化.

我想尝试一下Cognito,这就是我想象的身份验证工作流程:

  1. SPA登录用户并收到JWT
  2. SPA会在每次请求时将JWT发送到REST API
  3. REST API验证JWT是否可信

我的问题是关于第3步.我的服务器(或者更确切地说:我的无状态,自动扩展,负载平衡的Docker容器)如何验证令牌是否可信?由于"服务器"还没有出台的智威汤逊本身,它不能使用自己的秘密(如在基本JWT例如描述这里).

我已经阅读了Cognito文档并搜索过很多内容,但是我找不到任何关于如何在服务器端使用JWT的好指南.

authentication amazon-ec2 amazon-ecs jwt amazon-cognito

60
推荐指数
7
解决办法
3万
查看次数

如何将Amazon Cognito用作我的网站(非移动应用程序)的用户身份验证

如何在Web应用程序(而非IOS或Android应用程序)中使用AWS-Cognito进行用户身份验证?

亚马逊认知刚出来:

http://aws.amazon.com/cognito/

http://aws.amazon.com/about-aws/whats-new/2014/07/10/introducing-amazon-cognito/

来自FAQ:

问:我是否仍需要自己的后端身份验证和身份系统与Amazon Cognito?

不可以.亚马逊Cognito支持通过亚马逊,Facebook和谷歌登录,以及为未经身份验证的用户提供支持.使用Amazon Cognito,您可以支持联合身份验证,配置文件数据同步存储和AWS访问令牌分发,而无需编写任何后端代码.

它似乎是建立在移动应用程序的基础上(他们为Android和IOS提供SDK).

到目前为止,AWS php SDK和boto都没有引用Cognito,但亚马逊提到了我们可以触及的"后端API".

amazon-web-services amazon-cognito

48
推荐指数
3
解决办法
5万
查看次数

在amazon api网关中使用api密钥

我创建了一个api密钥并将其添加到我的函数中.我已经部署了api并测试了它但仍然得到:

"message": "Forbidden"
Run Code Online (Sandbox Code Playgroud)

如何将密钥传递给我的JSON请求,因为我一直在使用"x-api-key":"theKey"?

amazon-web-services amazon-cognito aws-lambda aws-api-gateway

39
推荐指数
8
解决办法
3万
查看次数

Cognito用户池:如何使用刷新令牌刷新访问令牌

我正在使用Cognito用户池来验证系统中的用户.成功的身份验证提供ID令牌(JWT),访问令牌(JWT)和刷新令牌.这里的文档http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html明确提到刷新令牌可以是用于刷新访问令牌,但没有提到如何.我的问题是,一旦我的访问令牌过期,我如何使用存储的刷新令牌再次刷新我的访问令牌?

我搜索了javascript sdk,找不到任何方法来做同样的事情.我绝对错过了什么.

此外,我通过Lambda函数考虑这一点,该函数接收访问令牌并刷新令牌并使用刷新的访问令牌进行响应.如果有人能对此有所启发,那将会很棒.

谢谢

amazon-web-services amazon-cognito aws-lambda

38
推荐指数
6
解决办法
3万
查看次数

Firebase身份验证与AWS Cognito

我们正在使用API​​ Gateway和Lambda在AWS上构建移动和Web应用程序,目前正在评估我们是否应该使用所有AWS Mobile Servcies(Cognito,Analytics,Mobile Hub等),或者我们是否应该使用Firebase(这提供了一些优势)喜欢远程配置).

我认为使用像Google Analytics,远程配置,崩溃报告,通知这样的firebase的非功能部分应该可以使用AWS后端.部分我不确定是身份验证层.

AWS Cognito可以很好地集成到API Gateway和Lamdba中,例如,只有经过身份验证的用户才能执行某些API调用.

如果我们使用Firebase身份验证,可以达到相同的行为吗?这有什么好的或坏的经历?

google-analytics amazon-web-services firebase amazon-cognito firebase-authentication

37
推荐指数
5
解决办法
2万
查看次数

AWS Cognito错误:'identityPoolId'无法满足约束

我是新的Cognito.我正在尝试使用Lambda实现AWS Cognito.这是我关注的教程.

AmazonCognitoIdentityClient client =
                new AmazonCognitoIdentityClient();
    GetOpenIdTokenForDeveloperIdentityRequest tokenRequest = new GetOpenIdTokenForDeveloperIdentityRequest();
    tokenRequest.setIdentityPoolId("us-east-1_XXXXXXX");
Run Code Online (Sandbox Code Playgroud)

这是我在setIdentityPoolId中使用的池ID

在此输入图像描述

这是JUnit测试

public class AuthenticateUser implements RequestHandler<Object, Object> {

@Override
public Object handleRequest(Object input, Context context) {

    AuthenticateUserResponse authenticateUserResponse = new AuthenticateUserResponse();
    @SuppressWarnings("unchecked")
    LinkedHashMap inputHashMap = (LinkedHashMap)input;
    User user = authenticateUser(inputHashMap);
    return null;
}

public User authenticateUser(LinkedHashMap input){
    User user = null;
    String userName = (String) input.get("userName");
    String passwordHash = (String) input.get("passwordHash");

    try {
        AmazonDynamoDBClient client = new AmazonDynamoDBClient();
        client.setRegion(Region.getRegion(Regions.US_EAST_1));
        DynamoDBMapper mapper = new DynamoDBMapper(client); …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cognito

36
推荐指数
1
解决办法
2万
查看次数

使用Cognito的AWS Lambda API网关 - 如何使用IdentityId访问和更新UserPool属性?

好吧,我现在已经进入了这个阶段并取得了重大进展,但仍然完全被基本面所困扰.

我的应用程序使用Cognito用户池来创建和管理用户 - 这些在S3上通过IdentityId标识.我的每个用户都有自己的S3文件夹,AWS会自动为他们提供一个等于用户IdentityId的文件夹名称.

我需要将IdentityId与其他Cognito用户信息相关联,但无法确定如何使用.

我需要的关键是能够识别用户名以及给定IdentityId的其他cognito用户属性 - 而且这非常困难.

因此,第一场战斗是在Cognito用户通过AWS API Gateway发出请求时,弄清楚如何获取IdentityId.最后我得到了解决方案,现在我有一个Cognito用户,他向API网关发出请求,而我后面的Lambda函数现在有了IdentityId.那一点有效.

但我完全不知道如何访问存储在用户池中的Cognito用户信息.我找不到任何明确的信息,当然也没有代码,它显示了如何使用IdentityId来获取Cognito用户的属性,用户名等.

看来,如果我使用"Cognito用户池"在API网关中授权我的方法,那么可以使用正文映射模板将Cognito用户信息(例如sub,用户名和电子邮件地址)放入上下文中,但我可以没有得到IdentityId.

但是如果我AWS_IAM在API网关中使用授权我的方法,那么身体映射模板会反过来 - 它为我提供了IdentityId而不是Cognito用户字段,例如sub和username以及email.

这让我发疯了 - 如何将IdentityId和所有Cognito用户字段和属性合并为一个数据结构?事实上,我似乎只能得到一个或另一个是没有意义的.

amazon-cognito aws-lambda aws-api-gateway

33
推荐指数
1
解决办法
6658
查看次数

Amazon Cognito"客户端尝试写未经授权的属性"

我正在使用适用于AWS Cognito的JavaScript SDK,并且有一些我似乎无法保存的自定义属性,无法查看原因.

问题属性是可变字符串字段,如下所示:

custom: role
custom: recruitingrole
custom: title
Run Code Online (Sandbox Code Playgroud)

同一请求中的其他自定义字段似乎更新确定.具体来说,这些似乎工作:

custom:division
custom:linkedin
custom:location
custom:bio
Run Code Online (Sandbox Code Playgroud)

当我通过SDK提交时,会返回:

{"__ type":"NotAuthorizedException","message":"客户端试图写未经授权的属性"}

以下是发送的数据,如Chrome开发人员控制台网络输出中所示:

{
    "AccessToken": "",
    "UserAttributes": [{
        "Name": "name",
        "Value": "Steve Austin"
    }, {
        "Name": "custom:company",
        "Value": "OSI"
    }, {
        "Name": "custom:division",
        "Value": "Bionics"
    }, {
        "Name": "custom:recruitingrole",
        "Value": "other"
    }, {
        "Name": "custom:linkedin",
        "Value": "http://www.linkedin.com"
    }, {
        "Name": "custom:location",
        "Value": "Mexico City, Mexico City, Mexico"
    }, {
        "Name": "custom:bio",
        "Value": "A man barely alive."
    }]
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我为什么不能保存这些属性?

谢谢

javascript amazon-web-services amazon-cognito

32
推荐指数
4
解决办法
1万
查看次数