проверка подлинности HTTP-запроса через URL - PullRequest
4 голосов
/ 03 мая 2019

Мне нужно получить страницу https://server_addr:8080/v1/profile/+18017629094. Учетные данные для аутентификации: имя пользователя = + 18016364708 пароль = Wmsb7Ii00MHyqLAKlyIl + e0n.

Я пробовал https://server_addr:8080/v1/profile/+18017629094?login=+18016364708&password=Wmsb7Ii00MHyqLAKlyIl+e0n и кучу других шаблонов, таких как https://+18017629094:Wmsb7Ii00MHyqLAKlyIl+e0n@server_addr:8080/v1/profile/+18017629094. Он по-прежнему запрашивает учетные данные. Как я могу аутентифицироваться через сам URL?

Ответы [ 2 ]

5 голосов
/ 12 мая 2019

Использование формата "user:password" в поле userinfo устарело до RFC 3986 . Поэтому некоторые современные браузеры больше не поддерживают URL-кодирование основных учетных данных доступа. Приложения не должны отображать в виде открытого текста любые данные после первого символа двоеточия (":"), найденного в подкомпоненте userinfo. Пароль, появляющийся в компоненте userinfo, устарел и считается ошибкой или просто игнорируется. Было бы безопаснее использовать заголовок запроса HTTP-авторизации, содержащий учетные данные, для аутентификации агента пользователя на сервере как

Authorization: <type> <credentials>

Например, Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

Или, альтернативно, как вы уже попробовали, вы можете добавить учетные данные пользователя к URL-адресу в качестве параметров запроса, но для этого потребуется реализовать собственную логику аутентификации пользователя на стороне сервера.

2 голосов
/ 13 мая 2019

Поскольку ваше имя пользователя и пароль содержат зарезервированные символы, такие как +, пробовали ли вы URL, кодирующий ваше имя пользователя и пароль в URL?

Так что в вашем случае +18017629094 становится %2B18017629094, а Wmsb7Ii00MHyqLAKlyIl+e0n становится Wmsb7Ii00MHyqLAKlyIl%2Be0n.

...