00:00
好同学们,这一节呢,给大家讲一下另外一种授权方式啊,就是用这个用户和密码登录,那么我们呢,先回到文档。啊,之前呢,我们给大家说,呃,我们这个web UI呢,跟in Fla DB它的一个交互方式呢,就是通过HTTPAPI,那么我们回到我们的web UI。呃,这个地方呢,还是我们的API talkingins,刚才呢,我们做的这个,呃,有一请刚才做的这个发起这个请求。哎,叫做authorization,那么这个请求呢,其实对应的就是我们现在看到的这个页面里面的啊,这些talking的信息。呃,我们可以按一下F12打开开发者工具,然后呢,把这个点一下这个禁止按钮,首先是选择啊,选择网络选项卡啊,如果你是英文版的话,应该叫network。呃,然后呢,你再点击这个按钮啊,这个按钮把这个我们目前的网络日志呢,给它清掉。好,那么现在呢,我们刷新一下页面。
01:03
那么这个呢,就是我们刚才刷新页面之后呢,发出的所有请求。往下拉一下,我们看一下有没有这个,哎,可以看到,呃,这里调用了一次这个,呃,APIAPI-V2杠,Authorization,然后这个做了一个查询,呃,那么可以看到呢,这个其实就是我们刚才做的这个调用的API,刚才在这个API post里面做的API,呃,那么现在呢,我们发现一个问题,就是你可以看他的请求头。可以看到请求头,我们说呢,这个这一个接口呢,是需要哎talking赋权的,你才可以调用的,但是呢,这里面并没有talking。之前呢,我们说这里必须有一个authorization的请求头,可以看到呢,这里没有,呃,那么他是怎么样进行复权的呢?其实是通过我们的用户和密码登录,呃,那么接下来呢,就在这个API post里面给大家演示一下如何进行登录操作。好,这里呢,我们先去新建一个接口。
02:02
名称呢就叫登录啊,然后呢,这个地方我们先空着,现在呢我们来看API文档。呃,API文档呢,找S打头的3IN点一下可以看到呢,这其实就是创建一个用户会话,也就是登录的操作,那么这个登录操作呢,叫做这个basic us,那么这种方式呢,其实叫做HTTP基本认证。好,这里呢,我们先去新建一个接口。名称呢就叫登录啊,然后呢,这个地方我们先空着,现在呢我们来看API文档。呃,API文档呢,找S打头的3IN点一下可以看到呢,这其实就是创建一个用户会话,也就是登录的操作,那么这个登录操作呢,叫做这个basic us,那么这种方式呢,其实叫做HTTP基本认证。啊,那么这里呢,我们可以看到右边的对应的API地址,来点一下下拉菜单。
03:03
啊,直接把它复制过来,然后呢,到我们的API post里面,把这个地址粘上。好,那么我现在呢,去做一个认证啊,去做一个认证。这个认证呢,点到认证按钮上之后呢,我们可以看到。有好几种可以选择的认证方式,那么我们这里呢,啊,使用刚才文档里面提到的basic啊,那么点这个可以看到呢,这里面就自动让我们输入用户名和密码,呃,这里呢,我们就输入它,我们刚才的这个用户名叫叫Tony是吧toy,然后密码呢是八个15678。好,那么我们现在呢,呃,可以看到啊,底下现在响应是空的,我们现在我们再看一下这个请求呢,是post类型,这个也对得上好。现在呢,我们就去发送一下这个请求,看它会发生什么。可以看到呢,就是你现在看到的这里其实是响应体,哎,什么都没有,呃,那么响应体什么都没有,那么玄机在哪呢?玄机在我们的响应头。
04:07
呃,你可以看到这里面有一个set cookie。这个操作呢,实际上是什么呢?实际上就是我们的服务端,像我们的客户端呢,设置了一个请求头啊,设置了一个cookie,然后这个cookie呢啊,会在以后我们每一次发起请求的时候携带。那么在我们这个。Post API这个软件里面呢,我们可以看到啊这个。这个请求头,这个响应头,响应头叫set cookie。哎,只要有他。我们看一下cookie管理器。你就会发现这里面呢,有一个cookie啊,躺着一个cookie。点一下你可以看到这个cookie的名字呢,就叫inlux DB o ss session,那么我们刚才看这个这个里面cookie的内容是什么?哎,这个名字是不是就是这一个,我们刚才在这个酷管理器里面看到的。打开这个库位管理器。
05:02
我们现在呢,把这个cookie删掉啊,你可以看到我这里已经清空了。那么我再次发起这个请求。你看,我发送。好,我这里呢,响应码是204,然后我再去看一下cookie管理器是不是就出现这个cookie了,所以说呢,我的库位管理器里面存在这个cookie是因为我的。这个响应。是因为我的响应,他帮我干了一件,哎,设置cookie的事情。那么现在呢,我先去这个目录上,把我们之前的共享请求头的那个talking给它关掉啊,可以看到看到呢,这里已经处于关闭的状态了,点保存。然后呢,回到我们刚前刚才。查看这个cook talking列表的。API。现在呢,我们再去发送请求,可以看到呢,这里说你没有权限啊,这里为什么没有权限呢?是因为我们的库费管理器。
06:05
没有开,没有开启全局cookie,那么一旦你开启全局cookie呢?呃,以后你向HOST1冒号8086这个地址发送请求的时候,就会带上我们刚才设置的cookie。那么现在呢,把它打开,再关闭酷黑管理器,我们现在再次发送请求,可以看到这一次呢,我们就把in Fla DB中的所有talking给列出来了啊,我们在看这个请求头,我们会发现呢,这次没有携带呃,Talking,反而呢是带了一个cookie,然后cookie里面呢,是我们刚才使用登录请求啊,使用登录请求得到的site cookie。得到的set cookie啊,那么这就是登录的一个原理啊,那么这个cookie呢,它每隔一段时间会呃失效,就像是我刚才啊不停的去重复登录一样。在这个cookie信息中呢,其实我们可以看到。
07:04
他呢,其实是有明确写明了过期时间的啊,那么GMT呢,其实呃,我们之前给大家说过GMT什么意思,实际上呢,就是零时区。那么我们可以看到他说这里的过期时间啊,是GMT的2022年9月21号晚上07:18:40啊,那么对应我现在东八区呢,应该是我现在的9月22日。呃,03:18:40,也就是说大概再过半小时,我的这个talk cook cookie呢啊就会过期,到那个时候呢,我就需要再重新登录一次。那么这也就是我们通过用户密码呢来获取操作权限的方法。那么这个地方呢,我们可以给大家再讲一下啊,这个基本认证的原理。呃,我们呢,在API post里面是通过呃一个表单啊,自己写了一下用户名和密码,就把这个事完成了啊实际上呢,我们可以看一下刚才呢,这一次请求的请求头。
08:10
呃,你可以看到有一个啊,有一个请求头呢,建筑对叫做authorization,然后呢,可以看到这个认证方式啊,就是它的这个值打头的这一个单词叫basic,也就是基本认证啊,那么后面这一串呢,是什么东西呢?它实际上是用户名和密码的BASE64编码,那么这个地方呢,它叫编码不叫加密啊,我们到这个呃,Vs code里面用Python给大家解释一下是怎么回事。啊,我这里面呢去。写一个变量叫user,然后值呢,就是我们刚才的Tony。啊是我们的用户名,然后呢,Password是我们的密码八个一,好,那么我们现在呢,用一个Python标准库叫BASE64。
09:02
它有一个标准的BASE64编码啊,这个抵扣呢是解码,Inco呢就是编码,这个把它编码呢,把这个user呢和密码用一个英文冒号拼起来。之后把它们再括起来一下,让它们的返回值。编码成UTF8。然后把这个BASE64编码的东西呢,啊,给它打印出来,看看是什么东西。呃,可以看到呢,我这里面其实得到了一个啊,你可能不认识的一个字符串。把它截图截出来看是什么。好,我们现在呢,回到我们的API post。啊,看没看到,其实就是我们的啊,这一个请求头里面的这一这一堆字符串啊,说白了,呃,这个基本认证呢,就是把用户名和密码用英文冒号拼起来,再经过贝斯64编码放到请求头里啊,那么这就是他的一个操作啊,但是呢,现在这个东西呢,你看不懂,那么意味它安全吗?它其实不安全。
10:21
呃,我刚才呢,强调base斯64呢是编码,不是加密,因为在这里面呢,其实我们的算法就是base斯64的这个编码算法是完全可逆的,就像是我们刚才看到一个抵扣的算法,我们现在呢把这个字符串捞出来。呃,就给它变量名叫S吧,然后好这样一弄,我们就有一个字符串变量啊,接下来呢,我们把它解码回啊原来的样子,看它是什么,还是用贝斯64这个库。有一个标准的解码。
11:00
这次呢,我们调抵扣的。啊扣呢,里面直接传字符串。然后把这个解码的东西打出来看看。好。那么我们可以看到呢,啊,把我想把这个上面这一行注释掉。我们可以看到,就是我们这一堆看不懂的字符串。被我们这样两行代码。成功的解回成了原样,也就是说你用这个基本认证的方式啊,虽然说你传了一个好像看不懂的东西,但实际上相当于在裸奔,你把你的用户名呢和密码在这个网络上呢,随意的传送,一旦中间呢被人拦截攻击,那么这个一旦这个请求呢被中间人拦截,那么你的用户名和密码就有泄露的风险,好那么这一节呢,我们关于啊登录获取权限的方式就给大家讲解完了。
我来说两句