0

私は使っている;

  • エクリプス ジュノ
  • ADT-22.3.0
  • aws-android-sdk-1.7.0

AWS Token Vending マシン コードを使用するために、以下のリンクから Android 用のサンプル コードを使用しました。http://aws.amazon.com/code/4598681430241367

Identity TVM モジュールが Glassfish サーバー 4.0 にデプロイされている

Identity TVM サンプルと通信しようとしたときの Android 用の AmazonS3PersonalFileStore サンプル。その与えるエラー

11-24 15:16:54.886: W/AmazonTVMClient(2262): Request to Token Vending Machine failed with Code: [404] Message: [Unable to reach resource at [http://ip.ip.ip.ip:8080/tvm/login?uid=59434cd89b7ff4b72695fbe55dc06e10&username=useruser&timestamp=2013-11-24T15%3A16%3A54.149Z&signature=fca134941ac0f1432568b1590057a64c1a537934d0f7c94b380c9fb23758bbd8]]

サーバー側でエラーが表示されます。

[2013-11-24T15:17:00.095+0000] [glassfish 4.0] [WARNING] [] [TokenVendingMachineLogger] [tid: _ThreadID=19 _ThreadName=http-listener-1(2)] [timeMillis: 1385306220095] [levelValue: 900] [[
  Client signature : fca134941ac0f1432568b1590057a64c1a537934d0f7c94b380c9fb23758bbd8 doesnot match with server generated signature .Setting Http status code 401]]

[2013-11-24T15:17:00.097+0000] [glassfish 4.0] [SEVERE] [] [TokenVendingMachineLogger] [tid: _ThreadID=19 _ThreadName=http-listener-1(2)] [timeMillis: 1385306220097] [levelValue: 1000] [[Error validating login request for username : useruser]]`

誰かがそれを解決するためにポイントを与えるのを手伝ってくれるなら; また、Identity TVM コードを GlassFish で実行するために特別なことをする必要がないことを願っていますか?


編集

ElasticBeanstalk に IdentityTVM.war (ダウンロードに付属) をデプロイすると、完全に機能します。問題は、グラスフィッシュで動作するようにコードを変更する方法にあると思います。TVMコードで次の変更を行っています。

  1. com.amazonaws.tvm.Configuration: TVMUser (IAM で作成) 資格情報 (AWS_ACCESS_KEY_ID、AWS_SECRET_KEY、APP_NAME) を使用して 3 つの項目をハードコーディングしました
  2. TokenVendingMachinePolicy.json: ポリシーを次のように変更しました。

    {"Statement": [ {"Effect":"Allow","Action":["s3:PutObject","s3:GetObject","s3:DeleteObject"],"Resource":"arn:aws:s3:::MyBUCKET/__USERNAME__/*"}, {"Effect":"Allow","Action":"s3:ListBucket","Resource":"arn:aws:s3:::MyBUCKET","Condition":{"StringLike":{"s3:prefix":"__USERNAME__/"}}}, {"Effect":"Deny","Action":["iam:*", "sts:*", "sdb:*"],"Resource":"*"}]}

正しい手順に従って、グラスフィッシュの展開用に IdentityTVM を変更していますか? 私たちのアーキテクチャにはグラスフィッシュに基づくクラスター環境があるため、グラスフィッシュを使用する必要があります。

4

1 に答える 1

0

これは、エンドポイントが一致しないという問題になると思います。つまり、

クライアント:

AwsCredential.properties

tokenVendingMachineURL=tvm.mydomain.com

TVM

から派生したエンドポイント

HttpServletRequest.getServerName()

私は同じ 401 問題を抱えていましたが、これが原因でした。Amazon モバイル フォーラムでの私の投稿を参照してください: https://forums.aws.amazon.com/thread.jspa?threadID=143949

TVM はエンドポイントとしてlocalhostを使用していました。プロジェクトに含まれるように vhosts ファイルを更新する必要がありましたProxyPreserveHost On

お役に立てれば。

于 2014-01-18T15:58:01.940 に答える