发送用于 HTTP 身份验证的用户名和密码

Posted

技术标签:

【中文标题】发送用于 HTTP 身份验证的用户名和密码【英文标题】:Sending username and password for HTTP Authentication 【发布时间】:2016-04-10 13:59:53 【问题描述】:

我正在开发一些需要 HTTP 身份验证的 php 页面。在某些情况下,显示登录提示很好,但在其他情况下(我试图在 ipad 上提供对应用程序的访问),则不是。

用户能否以某种方式在页面请求中发送他们的用户名和密码,以“绕过”登录提示,如果可以,如何实现?

我将使用 HTTPS。

【问题讨论】:

解决方案比您想象的要简单得多:实际上您只需发送凭据!您所指的“登录提示”是浏览器显示的结果,如果它被禁止返回被拒绝访问受 http 身份验证策略保护的站点。失败请求与成功请求的唯一区别在于已发送凭据。因此,您实际上可以立即执行此操作,如果您知道凭据而无需询问用户。 用户如何发送这些凭据? 不是由用户执行,而是由执行请求的应用程序执行。如果用户要输入凭据,那么您需要一些输入方式(因此需要一些身份验证表单/弹出窗口)。 对不起,当我说用户时,我指的是设备/应用程序。澄清一下:应用程序将如何发送凭据? 好吧,在您的应用程序代码中,您执行 http 请求。您很可能不会“手动”执行此操作,而是使用库来处理 http 请求。无论您执行哪种类型的请求,您都应该能够向请求添加单独的标头。标头在 http 协议定义中定义。您还想查看有关 http 身份验证方案的 apache 文档。 【参考方案1】:

您可以按以下形式将用户名和密码附加到 URL 的开头:

https://username:password@yoursite.com/

【讨论】:

我在其他地方看到过这种解决方案,但是除了这些解决方案之外,还有一些讨论表明这已在许多浏览器中被禁用。这是我需要关心的事情吗,或者在某些情况下我什至不会使用浏览器这一事实是否意味着我不需要关心?【参考方案2】:

您可以使用此代码绕过登录提示。

http://%@:%@@example.com/login.php",用户名,密码]; https://%@:%@@example.com/login.php",用户名,密码];

【讨论】:

以上是关于发送用于 HTTP 身份验证的用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章

SMTP 身份验证用户名是啥

没有用户名的 HTTP 身份验证

如何从 HTTP 基本身份验证中获取密码

BizTalk 发送端口与 NTLM 身份验证和自定义用户和密码

用于用户身份验证的个人访问令牌和 json Web 令牌有啥区别?

基于 Spring Security 令牌的身份验证