我刚刚开始学习rails,并且正在尝试使用我的应用程序配置AWS认知认证。我的问题是我不确定如何配置正确的access_key
和secret_access_key
。
我之前在node.js上配置了cognito,但它只需要与池相关的凭证(即客户端ID和用户池ID)。我跟随的红宝石sdk:http://docs.aws.amazon.com/sdkforruby/api/Aws/CognitoIdentityProvider/Client.html
想要我的access_key
和secret_access_key
。
为了生成这些密钥,我进入了AWS IAM - >仪表板 - >删除根访问密钥 - >管理安全证书
然后,我删除了所有其他无效的安全凭证并生成了一对新凭据。这是我的代码:
@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个选项: