本篇介绍HTTP基本认证,在HTTP请求过程中,有些请求是对外开放的,任何人都可以请求得到数据,有些请求是需要授权才能得到响应的。授权其实就是一个检查用户名和密码的过程,这个在HTTP中有一种基本认证方式,就是需要客户端给服务器端发送用户名和密码,服务器拿到用户名和密码之后去校验,如果校验通过,就给我客户端发送响应内容。如果校验失败,就返回HTTP错误代码401,提示未授权或者授权验证失败。
1.HTTP基本认证画图表示
根据上面的图,很好理解,客户端发送一个受保护资源的请求,服务端收到请求后,需要客户端提供用户名和密码,客户端把用户名和密码发送给服务器。服务器拿到用户名和密码就去验证,只有验证通过才给客户端发送请求响应内容。
2.利用requests来了解认证的实现过程。
import requests
Base_Url = 'https://api.github.com'
def build_uri(end_point):
return '/'.join([Base_Url, end_point])
def basic_auth():
response = requests.get(build_uri('user'), auth=('xxxxxxx', 'xxxxx'))
print(response.status_code)
print(response.text)
print(response.request.headers)
basic_auth()
运行结果如下:
我们把请求的头部给打印出来了,注意这里是请求头部,不是响应头部。我们可以看到在请求头部,我们的用户名和密码会放在Authorization这个字段里,里面是一个加密过的字段。这个是64编码加密,我们来利用python自带的包,来对这个加密字段进行解码,看看是什么样子。
1. 我们先把这个加密字段拷贝到一个记事本。
2.打开cmd,输入python,进入python交互式编程环境。
3.输入如下内容。
好简单吧,如果你知道一个字段是base64加密,那么你就可以用这样方法去解码,得到加密前的字段内容。看起来,HTTP基本虽然有了一定的加密和安全,但是还是不是很安全,下面一篇我们来介绍Oauth认证,比基本认证要安全很多。