认证模式之Basic模式

HTTP协议规范中有两种认证方式,一种是Basic认证,另外一种是Digest认证,这两种方式都属于无状态认证方式,所谓无状态即服务端都不会在会话中记录相关信息,客户端每次访问都需要将用户名和密码放置报文一同发送给服务端,但这并不表示你在浏览器中每次访问都要自己输入用户名和密码,可能是你第一次输入账号后浏览器就保留在内存中供后面的交互使用。先看下HTTP协议的Basic认证模式。

既然是HTTP协议规范,那其实就是约束浏览器厂商与web容器厂商实现各自软件时的行为约束,例如典型的一个认证交互过程是:浏览器向web容器发送http请求报文,web容器接收到http请求报文后解析需要访问的资源,如果该资源刚好是受保护资源,web容器则向浏览器发送认证http响应报文,浏览器接收到报文后弹出窗口让用户输入账号及密码,接着再次发送包含了账号信息的http请求报文,web容器对账号信息进行鉴权,通过验证则返回对应资源,否则重新认证。

Basic Access Authentication scheme是在HTTP1.0提出的认证方法,它是一种基于challenge/response的认证模式,针对特定的realm需要提供用户名和密码认证后才可访问,其中密码使用明文传输。Basic模式认证过程如下:

①浏览器发送http报文请求一个受保护的资源。

②服务端的web容器将http响应报文的响应码设为401,响应头部加入WWW-Authenticate: Basic realm=”myTomcat”。

③浏览器弹出对话框让用户输入用户名和密码,并用Base64进行编码,实际是用户名+冒号+密码进行Base64编码,即Base64(username:password),这次浏览器就会在HTTP报文头部加入Authorization: Basic bXl0b21jYXQ=。

④服务端web容器获取HTTP报文头部相关认证信息,匹配此用户名与密码是否正确,是否有相应资源的权限,如果认证成功则返回相关资源,否则再执行②,重新进行认证。

⑤以后每次访问都要带上认证头部。

服务端返回的认证报文中包含了realm=”myTomcat”,realm的值用于定义保护的区域,在服务端可以通过realm将不同的资源分成不同的域,域的名称即为realm的值,每个域可能会有自己的权限鉴别方案。

Basic认证模式有两个明显的缺点:①无状态导致每次通信都要带上认证信息,即使是已经认证过的资源;②传输安全性不足,认证信息用Base64编码,基本就是明文传输,很容易对报文截取并盗用认证信息。

 

转载于:https://www.cnblogs.com/ostin/p/9327926.html

WebService认证模式是指在Web服务中,为了确保请求的合法性和安全性,客户端需要提供某种形式的认证信息,以便服务器验证其身份。常见的WebService认证模式包括以下几种: 1. **基本认证Basic Authentication)**: - 客户端在请求头中发送用户名和密码,格式为`Authorization: Basic <credentials>`,其中`<credentials>`是经过Base64编码的`username:password`字符串。 - 这种方式简单,但不够安全,因为用户名和密码是以明文形式传输的,除非使用HTTPS加密。 2. **摘要认证(Digest Authentication)**: - 客户端发送一个经过哈希处理的密码,而不是明文密码。服务器会发送一个随机数(nonce),客户端使用这个随机数和密码进行哈希运算,然后将结果发送给服务器。 - 这种方式比基本认证更安全,因为密码不会以明文形式传输。 3. **令牌认证(Token-Based Authentication)**: - 客户端在首次认证成功后,会收到一个令牌(token),后续的请求中只需在请求头中包含这个令牌即可。 - 常见的令牌认证方式包括JWT(JSON Web Token),它是一种自包含的令牌,包含所有必要的信息来验证用户的身份。 4. **OAuth认证**: - OAuth是一种开放标准的授权协议,允许用户授权第三方应用访问他们在某个Web服务上的资源,而不需要分享他们的用户名和密码。 - OAuth通常用于第三方应用访问用户数据,例如通过Google或Facebook登录。 5. **证书认证(Certificate-Based Authentication)**: - 客户端和服务器之间使用数字证书进行身份验证。客户端会发送一个数字证书,服务器验证证书的有效性。 - 这种方式非常安全,但需要管理和维护数字证书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值