我刚刚开始学习轨道,并试图用我的应用程序配置AWS Cognito认证。我的问题是我不确定如何配置正确的access_key
和secret_access_key
。
我之前在node.js上配置了cognito,但它仅需要与池相关的凭据(即客户端ID和用户池ID)。我在这里关注的红宝石SDK:http://docs.aws.amazon.com/sdkforruby/api/api/aws/cognitoidentityprovider/client.html
想要我的access_key
和secret_access_key
。
要生成这些密钥,我进入了AWS IAM-> dashboard->删除您的root Access键 ->管理安全凭据
然后,我删除了所有其他不起作用并生成新对的安全凭证。这是我的代码:@cognito_client = Aws::CognitoIdentityProvider::Client.new(
access_key_id: "GENERATED_ACCESS_KEY",
secret_access_key: "GENERATED_SECRET_ACCESS_KEY",
region: "us-east-1"
)
resp = @cognito_client.sign_up({
client_id: "COGNITO_POOL_CLIENT_ID",
username: email,
password: password,
user_attributes: [
{
name: "email",
value: email
},
{
name: "given_name",
value: given_name
},
{
name: "phone_number",
value: phone_number
}
]
})
这是我在控制台中收到的错误:
Aws::CognitoIdentityProvider::Errors::NotAuthorizedException
(Unable to verify secret hash for client COGNITO_POOL_CLIENT_ID):
我需要将Cognito池与access_key_id和secret_access_key相关联吗?如果是这样,我该怎么办?
谢谢您提前的帮助。
您不需要AWS凭据就可以进行注册呼叫,因为从AWS的角度来看,这是一个未经验证的呼叫。问题是您的用户池客户端配置了客户端秘密。这里有2个选项:
-
使用没有客户端秘密的用户池。您可以从"应用客户端"选项卡创建一个,然后取消选中"生成客户端秘密框"。
-
在您的sign_up调用中传递秘密哈希。如果您的应用程序可以保护客户端秘密,则可以从客户秘密中计算秘密哈希,并将其传递到上面的注册电话中。这是指向AWS文档的链接,该链接解释了如何根据客户秘密计算秘密哈希:
http://docs.aws.amazon.com/cognito/cognito/latest/developerguide/signing-up-users-in--users-in-your-app.html#cognito-user-user-user-user-pools-computing-computing-secret-secret-hash