Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

Вопрос залу

Как известно, более-менее вменяемых способов аутентифицировать HTTP Request Body есть всего 2:
- Mozilla Hawk
- AWS4

Есть ещё 2 невменяемых:
- Oauth-идиоты что-то там надумали в FAPI2, но во-первых это ещё не релиз а во-вторых я не могу продраться через их сепульки
- Способ, который придумали в UK OpenBanking

Невменяемые способы хороши, но не hipster friendly. Есть ещё совсем невменяемые типа делать всё на коленках поверх RS256 JWT.

Короче, выбор пал на AWS4. Теперь внимание на экран.

https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html говорит, что есть Signed payload option. Как её заюзать? Проблем две:

1. Есть либы по созданию, но не верификации "подписи" (*-наци внутри меня мне не нравится, когда MAC называют digital signature, но такова жизнь).
2. Эти либы всё равно не создают сами x-amz-content-sha256

Вариантов решения несколько:

1. Найти где-то готовую реализацию
2. Налепить на коленках поверх npm i aws4
3. Найти референс-реализацию на левом языке и тестировать нашу реализацию против неё

И вот вопрос залу.

Как быть.

Upd: в Ноде внезапно npm i aws4 умеет генерить x-amz-content-sha256, если написать service: 's3'. А в localstack нет кода, парсящего их x-amz-date, которая ISO8601 без разделителей.

Upd2: Postman внезапно создаёт и "подписывает" x-amz-content-sha256. Хороший мальчик!
Tags: programming, все пидарасы а я
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments