[解決済み] CognitoIdentityProviderClient::adminCreateUser() で MissingAuthenticationTokenException ("Missing Authentication Token") が発生する。
質問
AWS PHP SDKの実装が動作しています。以下のような操作です。
$client->getUser()
は動作していますが
$client->adminCreateUser()
などは動作しません。
を呼び出すと
$client->adminCreateUser([...])
という結果になります。
Error executing "AdminCreateUser" on "https://cognito-idp.ap-southeast-2.amazonaws.com"; AWS HTTP error: Client error: `POST https://cognito-idp.ap-southeast-2.amazonaws.com` resulted in a `400 Bad Request` response:
{"__type":"MissingAuthenticationTokenException","message":"Missing Authentication Token"}
MissingAuthenticationTokenException (client): Missing Authentication Token - {"__type":"MissingAuthenticationTokenException","message":"Missing Authentication Token"}
ライン 191 で /var/www/project/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php
CLIから呼び出される同様のサービス(例えば
cognito-idp admin-create-user
)は、全く同じ認証情報で動作しています。
何が原因なのでしょうか?
詳細例
私の環境
- Ubuntu 18.04
- Apache 2.4.29
- PHP 7.3
- awss/aws-sdk-php 3.92.3
.aws/credentials
[default]
aws_access_key_id=XXXX
aws_secret_access_key=XXXX
開発者クレデンシャルを使用しています
コード例です。
$client = new CognitoIdentityProviderClient([
'version' => 'latest',
'region' => 'ap-southeast-2',
'credentials' => false, // Set to false to allow roles provisioned to our EC2 instances
]);
$result = $client->adminCreateUser([
'DesiredDeliveryMediums' => ['Email'],
'MessageAction' => 'RESEND',
'TemporaryPassword' => 'TemporaryPassword1234',
'UserAttributes' => [
['Name' => 'email', 'Value' => '[email protected]'],
],
'UserPoolId' => 'ap-southeast-2_XXXX',
'Username' => '[email protected]',
]);
解決方法は?
を削除する必要があります。
'credentials' => false
から
CognitoIdentityProviderClient
の構成になります。
は、その
adminCreateUser()
のような操作とは異なり)署名されたリクエストが必要です。
signUp()
というのは
signUp()
は符号なしリクエストで動作しますが
adminCreateUser()
といった開発者認証が必要な操作はできません)。
AWS Docsより
https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cognito-idp-2016-04-18.html#admincreateuser は言う。
AdminCreateUser は開発者の認証情報を必要とします。
https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_configuration.html#credentials は言う。
falseを渡すと、null認証情報を使用し、リクエストに署名しません。
開発者クレデンシャルを提供するために、リクエストに署名が必要です。
関連
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] YouTube APIからYouTubeビデオのサムネイルを取得する方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】未定義の関数mysql_query()をLoginで呼び出す【重複
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?