#http #authentication #nginx #tcp #request
Вопрос:
С помощью nginx можно выполнить аутентификацию запроса через серверную службу, такую как
location /somewhere_restricted {
auth_request /isallowed;
}
location = /isallowed {
proxy_pass backend_auth
}
Однако backend_auth проверяется при каждом http — запросе. Можно ли авторизовать TCP-сокет? Сокет будет авторизован один раз, а затем будут выполняться все http-запросы, выполненные через него. Отмечая, что я использую http2
Это то, что происходит, например, с websocket, но мне понадобилась бы та же функциональность для обычных http-запросов, и я пока не смог найти ничего, связанного с этим
Ответ №1:
Не существует такого понятия, как авторизованный TCP-сокет. Авторизация является частью прикладного протокола, а универсальный TCP-сокет не имеет конкретного прикладного протокола. Также location
он специфичен для протокола HTTP, т. е. универсальный TCP не имеет местоположения.
Комментарии:
1. Хорошо, спасибо, я надеялся найти способ пометить TCP-соединение, как это делается, например, с iptables, чтобы, как только соединение будет помечено, его можно было пропустить. Я использую websocket и nodejs, которые позволяют легко авторизовать (веб -) сокет, а затем отправлять файлы через него, но надеялся, что смогу сделать то же самое напрямую с nginx и не придется использовать пользовательские протоколы затем на websocket