問題の内容
リクエストにIPアドレス制限が含まれている署名は、Object Storage Service (OSS) によって計算された署名と一致しません。
発生原因
V2署名はリクエストで使用され、IPアドレスはリクエストで制限されます。 ただし、リクエスト内の署名は、OSSによって計算された署名と一致しません。
例
V2署名はリクエストで使用され、oss-ac-subnet-mask
ヘッダーはIPアドレスを制限するためにリクエストで指定されます。 ただし、リクエスト内の署名は、OSSによって計算された署名と一致しません。
GET /oss.jpg?x-oss-signature-verion=OSS2&x-oss-access-key-id=nz2pc56s936****&x-oss-expires=1141889120&x-oss-ac-subnet-mask=32&x-oss-signature=InvlidSignature HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 06:38:30 GMT
ソリューション
リクエストにIPアドレス制限が含まれている場合は、リクエストのIPアドレスが指定されたIPアドレスまたはCIDRブロックに属しているかどうかを確認する必要があります。
Alibaba Cloud SDKを使用してV2署名を使用するリクエストを開始する場合は、「Alibaba Cloud SDKを使用してリクエストを開始する」をご参照ください。
Alibaba Cloud SDKを使用してリクエストを開始した後に署名の不一致が報告された場合は、次の手順を実行して問題をトラブルシューティングします。
エンドポイントの形式が有効かどうかを確認します。
この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 有効なエンドポイントの形式は次の http://oss-cn-hangzhou.aliyuncs.com です。 他のリージョンのエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
AccessKey IDとAccessKey secret が正しいことを確認してください。
AccessKey IDとAccessKey secretは、スペースで開始または終了することはできません。
バケットとオブジェクトが次の命名規則を満たしていることを確認します。
バケットの命名規則:
名前はOSSで一意である必要があります。
名前には、小文字、数字、およびハイフン (-) を使用できます。
名前の先頭と末尾は、小文字または数字である必要があります。
名前の長さは 3 ~ 63 文字である必要があります。
オブジェクトの命名規則:
名前はUTF-8でエンコードする必要があります。
名前の長さは 1 から 1,023 バイトにする必要があります。
名前を、スラッシュ (/) またはバックスラッシュ (\) で始めることはできません。
名前は大文字と小文字を区別します。
署名方法を確認します。
自己署名モードを使用し、ビジネス環境がOSS SDKをサポートしている場合は、OSS SDKが提供する署名方法を使用します。 詳細については、「Alibaba Cloud SDKを使用したリクエストの開始」をご参照ください。
自己署名モードを使用し、ビジネス環境がOSS SDKをサポートしていない場合は、署名を計算してRESTful APIリクエストに署名を追加するためのコードを記述する必要があります。 詳細については、「RESTful APIリクエストの開始」をご参照ください。
プロキシサーバーに追加のヘッダーが追加されているかどうかを確認します。
自己署名モードを使用します。
V2署名を計算する場合は、「OSS SDK for Pythonを使用してV2署名を計算する」をご参照ください。
署名ロジックを指定する場合は、「RESTful APIリクエストの開始」をご参照ください。
サーバーが
StringToSign
パラメーターを含む応答を返した場合、サーバーのStringToSignパラメーターの値が計算前の文字列と同じかどうかを確認できます。