HTTP-аутентификация Twilio для программируемых URL-адресов обратного вызова статуса sms - PullRequest
2 голосов
/ 09 мая 2020

Я хочу использовать аутентификацию HTTP basi c для защиты паролем конечной точки обратного вызова состояния для программируемых sms. По первоначальному запросу от Twilio, у которого нет заголовка авторизации, я отправляю обратно код состояния 401 с заголовком WWW-Authenticate, установленным на «Basi c realm = 'some realm'». Однако я не получаю следующий запрос от Twilio с заголовком Authorization.

refer: https://www.twilio.com/docs/usage/security#http -authentication

// Отправка sms с обратным вызовом статуса

 const details = await client.messages
  .create({
     body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
     from: 'TEST',
     to: '......',
     statusCallback: `https://user123:pass123@foo.com/status`
   })

// Заголовки лямбда-ответа из журналов

Method response headers: {WWW-Authenticate=Basic realm='Validate twilio request', Content-Type=application/xml}

Примечание. Причина, по которой требуется аутентификация basi c, заключается в проверке подлинности запроса с использованием предоставленных имени пользователя и пароля. Я не использую HTTP-заголовок X-Twilio-Signature, поскольку у меня нет доступа к токену аутентификации для проверки запроса, и я использую ключи api для выполнения запросов.

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Я тестировал Ngrok (с включенной аутентификацией) с настроенной аутентификацией Twilio statusCallback basi c, и она работает. Попробуйте изменить заголовки ответов, чтобы увидеть, изменится ли это что-нибудь.

Ngrok возвращает следующие заголовки ответов:

HTTP/1.1 401 Unauthorized
Content-Length: 20
Content-Type: text/plain
Www-Authenticate: Basic realm="ngrok"
0 голосов
/ 13 мая 2020

@ Ответ Алана побудил меня продолжить изучение заголовков, возвращаемых API Gateway. Заголовки 'WWW-Authenticate', возвращенные лямбда-выражением, были переназначены API-шлюзом (подробнее здесь: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html)

Решением было реализовать лямбда-авторизатор для перехвата запроса. и выполните необходимую аутентификацию, то есть проверьте заголовок авторизации. Затем авторизатор лямбда разрешает или запрещает передачу запроса методу лямбда.

...