栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

HTTP基本认证而不是TLS客户端认证

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HTTP基本认证而不是TLS客户端认证

[海报]说如果我们不使用客户端SSL认证服务器,则它并不真正知道与谁交谈。

那不是我说的:)这就是我说的:

除非您使用TLS客户端身份验证,否则单独使用SSL并不是REST API可行的身份验证机制。

单单 是这里的关键词。也:

如果您不使用TLS客户端身份验证,则需要使用基于摘要的身份验证方案(例如Amazon Web Service的自定义方案)或OAuth甚至HTTP
Basic身份验证(但仅通过SSL)。

换句话说,TLS客户端认证是认证REST API客户端的 一种
方法。因为最初的SO问题是专门针对SSL的,所以我提到TLS客户端authc是唯一的“内置”身份验证形式,如果您仅依赖TLS。因此,如果您使用的是TLS,并且您未使用TLS客户端身份验证,则
必须 使用另一种身份验证形式对客户端进行身份验证。

有很多认证REST客户端的方法。TLS客户端身份验证只是其中之一(TLS的唯一“内置”身份验证,通常非常安全)。但是,TLS是一种 网络
级协议,大多数人认为TLS 太复杂,以至于许多最终用户无法配置。因此,大多数REST API产品都选择了易于使用的 应用程序
级别协议(例如HTTP),因为它对大多数人来说更易于使用(例如,仅设置HTTP标头)。

因此,如果要使用HTTP标头路由,则必须使用标头值来认证REST客户端。

在HTTP身份验证中,您有一个标头,

Authorization
及其值(标头名称很不幸,因为它通常用于身份验证,而不是经常用于访问控制(即授权))。的
Authorization
报头值是什么是由服务器使用以执行认证,并且它的三个令牌组成(通常)

  1. HTTP身份验证方案名称,后跟
  2. 空格(几乎总是空格),后跟
  3. 方案特定的文本值。

一种常见的HTTP身份验证方案是该

Basic
方案,它非常…好…基本:)。特定于方案的文本值只是以下计算值:

String concatenated = username + ":" + raw_password;String schemeSpecificTextValue = base_64_enpre(concatenated.toCharArray());

因此,您可能会看到相应的标题如下:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

服务器知道如何解析该值。它说:“嘿,我知道这个

Basic
方案,所以我要获取尾随的文本值,用base64 对其进行解码
,然后我将获得用户名和提交的密码。然后我可以查看这些值是否与我存储的值匹配。”

这本质上是

Basic
身份验证。由于此方案特别包含提交的以base64编码的 原始 密码,因此 除非 您使用TLS连接, 否则
它不被认为是安全的。TLS保证(主要是)窥探不会截获标头(例如,通过数据包检查)并查看密码是什么。这就是为什么除非通过TLS连接,否则 永远不要
使用HTTP Basic身份验证的原因。 始终 -即使在公司Intranet环境中。

当然,还有其他甚至更安全的HTTP身份验证方案。一个示例是使用基于摘要的身份验证的任何方案。

基于摘要身份验证方案更好,因为他们的方案文本值并 没有
包含在提交的密码。而是计算某些数据(通常是其他标头字段和值)的基于密码的哈希并将结果放入

Authorization
标头值中。服务器使用其本地存储的密码计算相同的基于密码的哈希。如果服务器的计算值与请求的标头值匹配,则服务器可以认为请求已通过身份验证。

这就是为什么这种技术更安全的原因:仅传输哈希,而不传输原始密码本身。这意味着即使在明文(非TLS)连接上也可以使用此技术对请求进行身份验证(但是,如果请求数据本身当然不敏感,则只希望这样做)。

一些基于摘要的身份验证方案:

  • OAuth 1.0a,又名RFC 5849。
  • HTTP摘要访问身份验证(由浏览器本地使用)。
  • Stormpath的自定义方案(完整披露,我是Stormpath的CTO)。
  • Amazon AWS的自定义方案。

与OAuth 1.0a相比,Stormpath和Amazon的REST安全性更高,因为它们 始终 对请求实体有效负载进行身份验证。OAuth
1.0a仅针对

application/x-www-form-urlenpred
与使用
application/xml
application/json
有效负载的REST
API不相关的内容(如今看来是大多数REST API)执行此操作。

有趣的是,OAuth2 不是 基于摘要的-它使用了我认为不太安全的东西,称为“承载者令牌”,我认为这是OAuth 2
各种问题的征兆。

最后,是的,这是一个无耻的插件,但是如果您不想担心这些东西,只需使用Stormpath(许多用例都是免费的)。我们会自动执行这些操作,因此您的应用程序不必这样做。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483507.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号