AWS Identity TVM возвращает Http 401 с ошибкой "подпись клиента не совпадает"

Я использую;

  • Затмение Юнона
  • ADT-22.3.0
  • AWS-андроид-СДК-1.7.0

Для использования кода AWS Token Vending я использовал пример кода для Android по ссылке ниже; http://aws.amazon.com/code/4598681430241367

Модуль Identity TVM развернут на сервере Glassfish 4.0

Мой образец AmazonS3PersonalFileStore для Android, когда он пытается связаться с образцом Identity TVM; это дает ошибку

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?


РЕДАКТИРОВАТЬ

Когда я развертываю IdentityTVM.war (из коробки, которая поставляется с загрузкой) на ElasticBeanstalk - он работает отлично. Я думаю, что проблема в том, как я модифицирую код для работы на Glassfish. Я делаю следующие изменения в коде TVM;

  1. com.amazonaws.tvm.Configuration: жестко закодированные три элемента с моими учетными данными TVMUser (созданные в IAM) (AWS_ACCESS_KEY_ID, AWS_SECRET_KEY, APP_NAME)
  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 для развертывания Glassfish? Я должен использовать Glassfish, так как в нашей архитектуре основывается кластерная среда.

1 ответ

Я думаю, что это будет проблемой с вашими конечными точками, не совпадающими, то есть:

Клиент:

AwsCredential.properties

tokenVendingMachineURL=tvm.mydomain.com

TVM

конечная точка, полученная из

HttpServletRequest.getServerName()

У меня была та же самая проблема 401, и это было причиной этого. Смотрите мой пост на форумах Amazon Mobile: https://forums.aws.amazon.com/thread.jspa?threadID=143949

TVM использовал localhost в качестве конечной точки. Мне нужно было обновить файл vhosts, чтобы проект содержал ProxyPreserveHost On

Надеюсь это поможет.

Другие вопросы по тегам