HTTP 基本认证、身份验证

HTTP 提供一个用于权限控制和认证的通用框架。本页介绍了通用的 HTTP 认证框架,并且展示了如何通过 HTTP 的“Basic”模式限制对你服务器的访问。

 

通用的HTTP认证框架


RFC 7235 定义了一个 HTTP 身份验证框架,服务器可以用来质询(challenge)客户端的请求,客户端则可以提供身份验证凭据。

质询与响应的工作流程如下:

  1. 服务器端向客户端返回 401(Unauthorized,未被授权的)响应状态码,并在 WWW-Authenticate 响应标头提供如何进行验证的信息,其中至少包含有一种质询方式。
  2. 之后,想要使用服务器对自己身份进行验证的客户端,可以通过包含凭据的 Authorization 请求标头进行验证。
  3. 通常,客户端会向用户显示密码提示,然后发送包含正确的 Authorization 标头的请求。

警告: 上图使用的“Basic”身份验证方案会对凭据进行编码,但是并不会进行加密。除非信息交换通过安全的连接(HTTPS/TLS),否则这件事极其不安全的。

对于资源的权限认证,是由服务器给到浏览器一种输入用户名和密码的方式。

基本流程是客户端到浏览器发起了一个请求。服务器告诉客户端你需要输入用户名和密码。

告诉的方式通过传递www-authenticate这样一个头部,这个头部里面有相关的消息,返回码是401,当浏览器受到这样的响应之后就会弹出对话框,几乎所有的浏览器都实现了这样一个功能,那么就可以在对话框中输入用户名和密码。

这个用户名密码会以base64位的编码方式传递给服务器。服务器进行校验,校验通过了就会返回200,不通过推荐返回403。

传输都是明文的,都是base64,这样就可以反推回原来的用户名和密码。通常做验证的时候应该基于TLS和SSL,否则就会有安全问题,密码就会被别人看到了。 

传入的头部Authorization,里面是用户名和密码。实际中采用的是用户名:密码的格式,按照dd:ee格式编码之后得到新的token表示用户名和密码。

这里可以看到做了编码和解码。如果是代理服务器认证就会传递 Proxy-Authorization = credentials,和上面是相似的。

认证响应回返回www-authentoicate,在challenge中包含两个部分,第一个是蓝色的部分auth-scheme,告诉浏览器基于基本认证www_authenticate:Basic realm="test auth_basic",然后弹出对话框。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值