Basic access authentication

翻译于 [wiki]{https://en.wikipedia.org/wiki/Basic_access_authentication}

在一个HTTP事务 上下文中,basic access authentication 是HTTP用户代理在请求时提供用户名和密码的一种方法。

Features

HTTP Basic authentication(BA) 的实现是强制控制访问web resources的最简单方式。因为它不需要cookies,session identifiers,login pages。 HTTP Basic authentication 采用HTTP头中标准的filed,避免握手(handshakes)的需求。

Security

BA机制由于传输证书提供不机密的保护。他们仅在传输时使用Base64来编码,但不会在任何地方加密或者hash。因此,HTTPS是经常和BA一起结合使用。

由于BA filed必须在每个http请求的header中被发送,所以浏览器需要在一个合理的周期中缓存证书来避免不断的提示用户输入用户名和密码。不同的浏览器缓存策略不同。IE默认缓存证书是15min。

HTTP不为web server 提供方法来指导客户端用户login out。但是,在一些浏览器中有很多清除cache 证书的方法。其中可以重定向用户到相同域中但是包括不正确的证书的URL。

不幸的,这个方式因浏览器的版本和不同而不能保持一致性。IE有提供js方法来清楚缓存证书。

 <script>document.execCommand('ClearAuthenticationCache', 'false');</script>

Protocol

Server side

当服务端想要用户代理 通过服务器认证,它必须response合适的未认证的请求。未认证的请求需要返回一个response,其中http header包括HTTP401 Unanthorized status和 WWW-Authenticate field。WWW-Authenticate field在BA红的结构如下:

WWW-Authenticate: Basic realm="User Visible Realm"

Client side

当用户代理想要发送认证证书到服务端,他需要使用 Authorization field。Authorization filed的结构通过如下步骤构成:
1. 用户名和密码通过冒号相连
2. 该结果使用RFC2045-MIME Base64转化,除了不限制一行76个字符
3. 认证方法和一个空格会放在刚编码后字符串的前面

例如,用户名 Aladdin 密码 OpenSesame 的结果是:

Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l

URL encoding

一个客户端为了避免在使用BA时激活登录,他们通过在url的hostname前面加上username:password@。例如:

https://Aladdin:OpenSesame@www.example.com/index.html

但是这个方法不适用于chrome,firefox, IE

Basic access authentication相关推荐

  1. TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案...

    TortoiseGit拉取或推送项目,输入账号密码后,提示 HTTP Basic: Access denied fatal: Authentication failed. 大体意思是,HTTP基本认证 ...

  2. TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案

    TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案 参考文章: (1)Tort ...

  3. git一直输入用户名和密码的解决方法remote: HTTP Basic: Access denied fatal: Authentication failed for

    报错信息:remote: HTTP Basic: Access denied fatal: Authentication failed for ' 解决方法:git config --global c ...

  4. git克隆代码报错remote: HTTP Basic: Access denied fatal: Authentication failed for的解决方案之一

    remote: HTTP Basic: Access denied fatal: Authentication failed for 'http://xxx.git/' 在克隆代码时输入一次错误的用户 ...

  5. git clone remote: HTTP Basic: Access denied

    git clone 项目失败,报下面的错误信息: $ git clone http://192.168.0.141/xxxx.git Cloning into 'appEnterprise'... r ...

  6. remote: HTTP Basic: Access denied的解决方法

    2021-12-07更新 如果出现每次提交/拉取都要再次输入密码解决方案 请执行: git config --global credential.helper store 再次输入密码之后 就不会每次 ...

  7. Git报错:remote: HTTP Basic: Access denied的解决方法

    背景 由于一些zz行为,在开发的中途更改了本地的一些git信息设置.导致最终想提交代码时,Git 执行 git push 报错如下: remote: HTTP Basic: Access denied ...

  8. git clone报错 emote: http basic: access denied

    git clone 的时候报错 $ git clone xxxxxxxxxxxxx Cloning into 'xxxxxxxxxxxxxxxxxx' remote: HTTP Basic: Acce ...

  9. HTTP Basic Access denied

    remote: HTTP Basic Access denied 起因 我的 ldap 账号更换了密码,导致我的 gitlab 的代码没办法 pull 和 push 了,比较糟心 报错信息 git - ...

最新文章

  1. php simplexml 遍历,php下使用SimpleXML 处理XML 文件
  2. Android之GSON解析JSON
  3. Lombok 的爱恨情仇
  4. SQL2008R2的 遍历所有表更新统计信息 和 索引重建
  5. IOS-网络(大文件下载)
  6. jq之$(“p:first“)
  7. oracle的jdbc语句,Java Oracle jdbc SELECT语句
  8. mac 强制退出程序_Mac OS系统如何强制退出应用程序
  9. 用Atlas来实现一个基于AJAX的无刷新Chatroom
  10. 计算机开机只显示桌面不显示图标,电脑开机后只有桌面背景不显示图标怎么办...
  11. lightGBM简述
  12. 存储空间不足,无法完成此操作
  13. 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛题解
  14. 打造爆款产品只需四步,学会你也能爆单
  15. Python-Flask开发微电影网站(一)
  16. 安卓 模拟返回按键
  17. mysql 怎么表示正无穷_C语言中正无穷大怎么表示
  18. QML类型:ApplicationWindow
  19. 中小型企业网络架构(一)
  20. windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

热门文章

  1. 统计学:第六章-总体均数得估计
  2. 支付宝微信扫码支付调研
  3. Gurobi9.0.3安装
  4. java发送chunked数据_如何从java servlet中的chunked响应中发送Http预告片/页脚?
  5. (附源码)基于Spring Boot的ERP仓储管理信息系统设计与实现 毕业设计150958
  6. Vue3+TypeScript 项目封装axios
  7. 09数据在内存中的存储
  8. 【uniapp】uniapp开发移动端项目使用highcharts(蜘蛛图示例)
  9. 【全网最强C语言学习】五子棋游戏
  10. Thirty=Thirsty