通过URL验证HTTP请求

时间:2019-05-02 23:54:59

标签: authentication url httprequest basic-authentication http-authentication

我需要检索页面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 个答案:

答案 0 :(得分:3)

RFC 3986不赞成在userinfo字段中使用格式"user:password"。因此,某些现代浏览器不再支持基本访问凭据的URL编码。应用程序不应在userinfo子组件中的第一个冒号(“:”)字符后将任何数据呈现为纯文本。不推荐使用出现在userinfo组件中的密码,该密码被视为错误或被忽略。 利用包含证书的HTTP授权请求标头来更安全地对服务器上的用户代理进行身份验证

Authorization: <type> <credentials>

例如,Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

或者,或者,正如您已经尝试过的那样,您可以将用户凭据作为查询参数附加到URL,但这将要求您在服务器端实现自己的用户身份验证逻辑。

答案 1 :(得分:2)

由于您的用户名和密码包含诸如+之类的保留字符,您是否尝试过使用URL对用户名和密码进行编码?

因此,在您的情况下,+18017629094变成%2B18017629094,而Wmsb7Ii00MHyqLAKlyIl+e0n变成Wmsb7Ii00MHyqLAKlyIl%2Be0n