AWS Cognito RubySDKを使用して新しいユーザーを登録する方法を知りたいのですが。
これまでに試しました:
入力
AWS_KEY = "MY_AWS_KEY"
AWS_SECRET = "MY_AWS_SECRET"
client = Aws::CognitoIdentityProvider::Client.new(
access_key_id: AWS_KEY,
secret_access_key: AWS_SECRET,
region: 'us-east-1',
)
resp = client.sign_up({
client_id: "4d2c7274mc1bk4e9fr******", # required
username: "[email protected]", # required
password: "Password23sing", # required
user_attributes: [
{
name: "app", # required
value: "my app name",
},
],
validation_data: [
{
name: "username", # required
value: "true",
},
]
})
出力
Aws::CognitoIdentityProvider::Errors::NotAuthorizedException (Unable to verify secret hash for client 4d2c7274mc1bk4e9fr*****)
参考文献
前もって感謝します
アプリクライアントがクライアントシークレットで構成されている場合、ほとんどのクライアントリクエストでは、リクエストのオプションパラメータに「シークレットハッシュ」を含める必要があります。Cognitoドキュメントはthusly秘密のハッシュを説明します。
SecretHash値は、ユーザープールクライアントの秘密鍵とユーザー名に加えてメッセージ内のクライアントIDを使用して計算された、ベース64でエンコードされたキー付きハッシュメッセージ認証コード(HMAC)です。次の擬似コードは、この値の計算方法を示しています。
Base64(HMAC_SHA256( "クライアントシークレットキー"、 "ユーザー名" + "クライアントID"))
ドキュメントはまた、サンプルJavaのグロブを介して、独自にロールすることが期待されていることを明確にしています。少し実験した後、私は次のように正常にsign_up
通話を完了することができました(私のテストプールは電子メールと名前の属性を必要とするように設定されました):
def secret_hash(client_secret, username, client_id)
Base64.strict_encode64(OpenSSL::HMAC.digest('sha256', CLIENT_SECRET, username + CLIENT_ID))
end
client = Aws::CognitoIdentityProvider::Client.new(
access_key_id: AWS_KEY,
secret_access_key: AWS_SECRET,
region: REGION)
username = '[email protected]'
resp = client.sign_up({
client_id: CLIENT_ID,
username: username,
password: 'Password23sing!',
secret_hash: secret_hash(CLIENT_SECRET, username, CLIENT_ID),
user_attributes: [{ name: 'email', value: username },
{ name: 'name', value: 'Bob' }],
validation_data: [{ name: 'username', value: 'true' },
{ name: 'email', value: 'true' }]
})
CLIENT_SECRET
[一般設定]> [アプリクライアント]にあるアプリクライアントシークレットです。
結果:
#<struct Aws::CognitoIdentityProvider::Types::SignUpResponse
user_confirmed=false,
code_delivery_details=nil,
user_sub="c87c2ac8-1480-4d15-a28d-6998d9260e73">
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加