REST API の認証を堅牢にするのに問題があります。
APIキー、タイムスタンプなど、およびリクエスト本文またはURLクエリ文字列を使用して署名付きハッシュを生成しています。本文で送信されるものはすべて常に JSON である必要があるため、問題ありません。しかし、クエリ文字列に署名すると頭が痛くなります。
すべての REST クエリは、プライベート資格情報を署名トークンとして使用して、小文字のアルファベット順に並べ替えられたクエリ パラメーターに署名することによって認証される必要があります。署名は、クエリ文字列を URL エンコードする前に行う必要があります。
しかし、key[0]=somevalue&key[1]=someothervalue ではどうでしょう。それを注文する方法は?別の方法として、クエリ文字列に常に JSON を強制することもできますが、それは実行可能な解決策ですか?
someurl?{"somekey":"somevalue"}
編集
ここまでたどり着いた問題は次のとおりです。私 (クライアント) は ?a=value1&b=value2 を指定してリクエストを送信し、このクエリ文字列を使用してハッシュを作成します。しかし、サーバー (Apache、PHP) が ?b=value2&a=value1 を受け取ることがあったため、要求が失敗しました。別の結果を与えるハッシングにより、認証が失敗します。