粉丝7.8万获赞28.9万

什么是 sso? 与 os 二点零协议有什么关系?其实这个问题啊,我们是抽的一个呃,我们同学们面试的一个真题,但是其实这个问题的本身重点是什么呢? 他重点既不是 oversi 点零,也不是 ss, 而是你要理解互联网场景向不同的登录场景 sso 和 oversi 点零,其实他们的协议场景是不一样的,使用场景是不一样的。而很多同学对这个完全没概念, 就觉得 s s o 和 over 小姐姐反正都是做这个互联网呃,权限认证的。很多同学都是这样一个模糊的概念,所以一旦面试官跟你聊深了一点, 比如说也像 o r 三点零弦一样,聊怎么设计一个 s s o 的一个场景。哎,往往就会很多同学就容易翻车了,问懵了。因为对这个概念很模糊,其实他们两个完全是不相关的两个场景。那怎么理解呢? o r 是二点零 的场景,其实那使用场景通常称为联合登录,重要的是什么呢?重要的是一处注册,多处使用。 这个本视频的文档我已经整理好了,并且与往期内容一起汇入,放在了视频的最后面,截止看完一定对你有帮他。这个场景是一处注册,多处使用。这个关键也就是比如说我们注册了一个微信账号,我就可以用微信账号登录百度啊,登录其他很多很多应用,对吧?很多这很多用户都可以用这个微信来登录, 这个是一个重要的场景,而 s s o 是什么呢?是 single sign 单点登录,它是一处登录,多处同时登录, 所以这个场景跟 osa 零其实是不不相关的,一处登录,多处同时登录,比如说, 呃,比如说我们常见的我们访问淘宝,对吧?访问淘宝,当我用淘宝完成了登录之后,淘宝这边完成登录了之后,这个我再访问天猫,天猫这边同样也是登录的,对吧?同样也是登录的,但是如果我在天猫这边退出,退出了之后我再来访问淘宝, 你看这个时候就变成没有登录了,对吧?这是单点登录的一个场景,单点登录往往更适合于内部系统之间,它并不适合多个系统之间,所以这是单点登录的一个场景。那单点登录其实跟我们相比 os 二点零协议来说简单很多,我们之前也就介绍过,对不对? 呃,之前在介绍一个分布式的一个存储方案的时候就介绍过。其实啊, single s s o 它的关键是什么呢?就是你的 say 选信息统一存储 s s o 的关实线,关键是将 station 信息集中存储, 它同样是基于这种 cookie 加 season 的方式,只是说把我在淘宝上登录的这个 season 信息不要放到,不要放到淘宝的这个 top 上面,而放到背后的一个呃,第三方存储,比如说 radius 当中,这样的话,我的天猫呢,也可以从这个 radius 当中去读取信息。 就是我们之前呃,第一个图啊,我们看一下这种 c 选共享的这个机制, 就是这种机制就足够实现一个呃,单点登录了,而并不需要像 ow 十二点零协议这么复杂的一个流程。只是呢,我们通常在用这个 sso 的时候,什么呢?都是使用 supreme security 这一个框架来帮我们实现,因为 supreme security 的这个框架既帮我们实现了 over 三点零,也帮我们实现了 s s o, 但是也了解他们的,其实他们两个的本质是不一样的。哈,我们呢也有一个自己的一个小 demo, 这里呢也是用这个。呃,嗯, supreme security 框架来快速实现的一个 s s o。 它需要什么呢?我们有两个客户端,比如呢,这代表是那个,这个代表淘宝,这个代表天猫,后面呢,会有一个专门的一个授权服务,统一授权服务,我们把这应用都启动起来啊。 呃,启动起来。 好,这个启动在八三零零端口,对吧?我们刚才已经看到了,这个启动在八 三零零端口,然后呢启动这个客户端,第一个客户端这个表示是那个,这个代表是百度啊,这个代表是那个淘宝啊,这个淘宝,然后呢,这里代表是另一个客户端,代表是天猫。好,淘宝启动完了,在八三零幺端口,然后呢,天猫在这个 启动在天猫是佩戴八三零二这个端口。好,当我们配置完成之后,我们尝试来访问我们自己的 八三零幺。呃,八三零幺端口,我们要找他的一个 controller 来访问,比如说我们看他的这个 mobile 吧,嗯, mobile inquiry, 再加一个 client 后缀。啊呀,弹到一个登录窗口,但是这个登录窗口注意到没有?是八三零零这个端口,八三零零对应的是我们这个 off server 的这个端口,所以我们在这里完成登录之后, 到了八三零幺这个端口了,对吧?到了八三零幺,但我们这个时候再来访问我们另外一个呢?另外一个是八三零二端口,对吧? 哎,这个看见没有?这是单点登录,单点登录,这样就拿到了这个 mobile 的信息,其实它之机遇的是什么呢?就是这个 section 的集中存储,把这个 就是我们这个应用的,相当于是什么呢?把他们的一个筛选信息集中存储到 off server 这个应用当中,由他的几种管理。 其实我们不使用 supreme security, 其实也是挺好实现的,就把它好像都换成一个 redis 嘛,对不对?那所有的验证的时候也是到 redis 里面去访问就行了,但是 supreme security 呢,帮我们做了更好的封装,那就集中到这样一个 os server 这样一个应用当中,就管理 session。 好,那同样呢,当我们在另在其中一个应用去完成登录, 我们去进行登出,我们看登出这个端口的防漏镜啊,嗯, common gun log out。 呃,这个灯灯出就不能在这里灯出了,要到八三零零上面, 在八三零零这上面完成登出了之后,我们再看八三零二这个应用,我们来刷新,你看他也没有登录了,看见没有,他也失去了登录信息,他也跳到了这个统一的登录中心,所以这是 一个单点登录。这个场景我们看淘宝呢,其实也类似这样的一个场景啊,你看他登录者是在 logan 淘宝顶上,然后呢?啊,这里是到天猫顶上,他们只是一个实现方式不一样,对不对?当你在这边完成登录了之后, 那你在这边完成登录了之后,再访问天猫,嗯 嗯,这网速有点慢,其实我们刚才已经看到效果了,对吧?在访问天猫的话,其实上天猫这边呢,他就已经拿到了这个登录的信息,所以这是呃呃, s s o 看这里是又拿到了登录信息,对吧?这才是 s s o。 所以这个问题的关键在哪里呢?就是关键是 s s o 和 oversize 二点零场景的区别, 这个一定要弄明白,实际上 o s s o 的实现机制远比 over 三点零简单很多啊,所以这是关于这个 问题好。

大家好,欢迎来到本套课程的第三课。在本课程中,我会为大家讲解 os 二点零协议以及其实现的上半部分。在这一课程中,我会为大家介绍 os 二点零的基本概念。 在第二课时,会用拍森编写 os 二点零的一些基本功能,在第三课时中,会用 fnast 编写一个 os 二点零的授权服务器。下面让我们开始第一节课时的讲解。 在本科学中,首先我会对 os 二点零做一个概述,说明什么是 os, 他的应用场景以及 运行流程。接下来我会简要介绍四种授权模式,并对他们进行区别。最后重点讲解授权码模式。 os 是一个正式的互联网标准协议, os 二点零是它的后续版本,主要用来解决在无需用户提供用户名密码的情况下,第三方应用程序能够获取用户存储在服务器 提供商那里呃存储的某些数据。比如,当我们第一次访问某网站时,可以选择使用微博账号进行登录, 登录之后,即使我们没有填写任何个人信息,这个网站也自动使用了我们微博的昵称和头像。这个过程就是 off 授权的过程。请注意,在这个过程中 出现了三个角色,微博用户、某网站。此时欧奥斯的作用就是微博在经过用户同意的情况下给某网站一个访问权限。 一般来说是一个访问硬牌,英文名字叫做偷肯,是某网站在一定时间内可以访问用户存储在微博上的特定资源,比如头像、用户名等。 让我们来看一下整个过程的流程。在这张图中, connect 代表第三方的某网站,用户是 resort is honor 这个角色。 auto residence server 代表微博的授权服务器,由这个角色发放 token。 resort is server 代表微博的资源服务器,由这 这个角色来提供用户的头像和用户名等资源,同时资源服务器可以和授权服务器的同一个。在整个流程中, a 步骤,当用户使用微博登录某网站时,客户端要求用户给予授权。 b 步骤,用户同意给予授权。 c 步骤,认证服务器确认授权无误之后,同意向客户端发放令牌,客户端使用令牌向资源服务器申请获取资源,资源服务器确认令牌无误,同意给予资源。 这个硬牌是针对每一个第三方应用,每一个应用一个,并且拥有时效性,而且用户可以手动管理硬牌的有效性。可以看出,在这上面的流程中, b 步骤是授权的关键。下面我为大家讲解 bos 提供的四种授权方式。 授权码模式授权码模式的特点就是通过客户端的后台服务器与服务器提供商的认证服务器进行互动来获取 token, 这个过程不通过用户的委婉系是最安全的一种方法。 第二种方法是简化模式,在这个模式下,没有 os 流程中的 c 和 d 的步骤,而是用户浏览器通过资源服务器发送的代码提取偷啃并直接发送给第三方应用程序。 第三种是密码模式,在这种模式下,用户必须把自己的密码给客户端,但是客户端不得存储密码, 通常这是在用户对客户端高度信任的情况下。比如客户端是操作系统的一部分,或者是由一个著名公司出品的产品,而认证服务器也只有在其他模式无法执行的情况下才考虑使用这种模式。第四种是客户端模式, 在这种模式中,用户直接向客户端注册,客户端以自己的名义要求服务服务提供商提供服务,这其实不存在授权的问题。 其中授权码模式是功能最完善、流程最严密的授权模式。简化模式,不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳惯了授权码这个步骤。密码模式 需要用户向客户端提供自己的用户名和密码。客户端模式指客户端以自己的名义,而不是以用户的名义向服务提供商进行认证。由于其他的模式都是授权码模式的某种简化版,在本课中我们只针对授权码模式进行讲解。 还记得我们之前说过的几种用户角色吗?用户代表 ru sorry is honor can i 代表第三方的某网站, author raisin 代表微博的授权服务。这里的 uzain 直译过来就是用户代理,表示用户所使用的浏览器,因为毕竟整个授权过程稍稍有点复杂,如果浏览器能够代理我们操办一切,用户只要点点鼠标就好了。还记得 之前的 os 流程看 a 步骤吗?对了,用户通过浏览器发起登录某网站的申请,让我们从正义开始。现在某网站,也就是这个 canat, 通过步骤 a 响应用户的登录请求, 将用户重定向至微博认证服务器,并附上一个 ui b 步骤,用户微博要求用户给予授权,也就是大家现在看到这个页面。 c 步骤,如果用户同意授权,嗯,微博认证服务器将用户再次重定向至 a 步骤中某网站提供的 ui 地址并附上一个授权码。之后这个网站 通过嗯步骤 d 将授权码以及 a 步骤中提供的 ui i 向 授权服务器申请偷啃授权服务器通过对授权码以及 us 地址的核对来确认是否发放硬盘。至此,我们就走完了 os 认证的整个授权流程。让我们来总结一下这里需要实现的部分。首先,这里是一个需要三方合作的任务, 包括用户某网站,这里也叫做 clint 微博,当然也可以叫做授权服务器和资源服务器组成的共同体。 由于前一节课程中我们已经大致实现了资源服务器和授权服务器,只需稍作修改就可以满足要求。下一节课我们将进一步进行分析并兵马完善它。那么下一课时再见。


哈喽,大家好,首先来看一个例子啊,假设这个是我们的一个客户端的一个网站啊,这个网站的地址是七零零二,然后它集成了一个 os 登录的一个功能啊,就类似于我们 网站上的微信微博登录啊,然后我们点击这个登录之后啊,他就会跳转到我们的一个授权登录页啊,这个授权登录页是一个七零零幺的一个地址,跳转过来之后啊,我们输入我们的用户门密码,进行一个用户的登录, 然后登录完成之后啊,他就会又会跳回去我们之前的一个客户端的一个网站啊,然后并且啊拿到我们当前啊这个用户的一些用户信息啊,这个就实现了一个 os 登录的一个功能啊。 ok, 我们回过头来看一下 os 里面他涉及到的几个角色啊, 首先第一个就是我们的接入 os 登录的这个网站,我们把它叫做客户端啊,也就是说我们的一个第三方应用啊,这是他 os 的第一个角色。然后第二个角色就是我们点击登录之后啊,跳转到的这个,他其实就是我们的叫授权服务器 啊,授权服务器主要就是用来专门处理一些用户授权登录操作的,然后当我们点击登录之后啊,然后这个界面就会拿到一个用户信息啊, 那我们当前网站拿到的用户信息他是从哪取的呢?他是从资源服务器取的啊,也就是说 os 的第三个角色叫做资源服务器 啊,那授权服务器和资源服务器呢?有可能是同一个服务器啊,比方说我们网站接入微信登录之后啊,我们会从微信开放平台里面去 处理这个用户登录的请求啊,也有可能会从微信开放平台里面去获取这个用户信息啊,所以他这个微信开放平台啊,就是我们的一个授权服务器,也是我们的一个资源服务器, 他同时担任两种角色,然后除了最开始我们网站这个客户端之外啊,还有就是我们的拥护啊,这四种角色构成了 os 里面的四种认证角色。 ok, 那 os 登录里面有几种授权模式呢?总共是有四种啊,分别是这个授权版模式、讲话模式, 然后密码模式和我们的这个叫客户端模式。然后我们最开始讲那个 demo, 他其实就是用的最多的,也是最实用最安全的一种模式,授权版模式。然后这集我们还会给大家讲一下什么叫做密码模式。首先我们来看一下这个授权版模式的一个认证总体流程。我们拿 啊微信这个登录我的一个例子来看一下,首先呢涉及到几个角色,我们的微信用户,然后我们的第三方应用,还有我们的微信开放平台啊,我们之前说过啊, 微信开放平台他既担任这个志愿服务器,同时又担任我们的叫授权服务器。然后整体的流程哈,就是我们微信用户啊,请求第三方应用的时候,第三方应用的这个网站上啊,一般会内嵌一个微信登录的入口啊,然后我们点击微信登录的入口之后啊,他会跳转到微信开放平台啊, 比如说我们掘金的网站,我们去点登录的时候,他会内嵌一个叫微信登录入口, ok, 我们单击之后他会跳转到这个微信这个啊,开放平台的一个授权登录页啊,也就是说我们会请求啊,微信这个 os 登录, ok, 我们用户点击确认之后啊,或者我们用户扫码之后啊,微信 开放平台给我们网站一个 cod, 然后拿到这个 cod 之后啊,他就会重定向到我们第三方网站的上的一个地址上, ok, 然后我们这个网站啊,拿到这个 cod 之后啊, 再加上我们的 a p p id 和 a p p 的密,要啊,这个 a p p id 和 a p p 密要是之前微信开放平台颁发给第三方应用的啊,啊?他怎么颁发了?就是说你要接入他的话,你得提前去申请吧, 申请的时候他就会给你发一个 a p p id 和 secret 啊,然后这个网站拿扣的 a p p id, secret 啊,拿到之后啊,它会掉这个 啊,开放平台的一个接口啊,去换取这个 anthes token 啊,那 anthethtoken 拿到之后啊,那这个第三方应用啊,就可以拿 anthes token 啊,呃,去请求获取用户信息的一些接口了,包括我们的用户的名称, 用户的头像等一些信息啊,这个就是微信登录的一个整体的一个流程啊,那回过头来看一下我们刚才那个 demo 啊,首先的话是有一个这样的一个网站啊,这个网站是一个七零零二,七零零二里面只有一个 os 登录的一个录客啊, 然后我这里是有一个这个叫客户端的一个应用啊,就是我们这个网站啊,这个是 os 登录啊,然后他点击登录之后啊,他会跳到啊,这个授权服务器的一个授权地址啊,是这个 啊,七零零幺 alsoy y s 的一个接口啊,是我们授权服务器的一个接口啊,然后他会携带几个参数啊?叫 clinic id 啊,就是我们当前这个客户端的一个唯一的一个 id 啊,然后再就是你的一个 state 值啊,这个 state 值你可以是一个拥有 id 或者怎么样啊?然后再一个 要重要参数就是 red r 的余娃,这个参数是干啥用的?就是啊,你在这个跳转到这个授权登录页之后,那你登录成功之后啊,那你要回跳到一个地址上啊, 也就回跳到我们这个客户端的一个网站上啊,所以这个地址是我们当前客户端的一个回跳地址啊,啊,这对应到我们这里的一个地址啊,然后我们看一下这个啊,首先 他这有几个路由啊,首先是我们首页的这个路由啊,就是这个我们当前网站这个首页路由。然后再就是我们回跳地址啊, 也就说我们在这里指定的 ur 的这个地址是一个杠二十的路由啊,这是个杠二十的路由。我们来继续看一下,点击之后啊,他会跳转到这个七零幺的这个地址啊,七零幺这个地址是在哪呢?是我们的授权服务器啊,我这有一个授权服务器啊,这个 授权服务器有一个 alsoys 接口啊,啊,这个接口,他会跳到这个路由上,这个路由的话,又去做了一些什么操作呢?他会 调到这个 user office 啊,他会跳这个登录页,也就是说会渲染出这样一个登录页面出来啊,我们看一下这个 log 啊,就是这样一个界面啊, os 授权登录页, os 授权登录页 啊,然后我们会输入我们的优酷门密码,包括我们的客户端 id 这些参数啊,那这些参数是怎么来的?就是我们刚才刚才渲染的时候,我们从这个客户端的这个 跳转过来的这个 url 上啊,取到的啊,取到之后我们把这些参数啊会渲染到页面啊,渲染到页面渲染到这里,这些参数其实就是我们刚才从这里传过去的啊,直接传过去客户到 id states redoi ur 啊啊,这个是跳转到这个 os 服务器的一个授权登录页啊,那授权登录页点击登录之后啊,他又会调到这个 users 澳洲 y 这个接口啊,这个接口是干啥的?这个接口是授权服务器用来颁发扣的的一个接口啊, 也就是说我们最开始讲的这里啊,这个用户点击确认之后啊,那微信开放平台会给一个扣的,给扣的之后,拿到扣的,他会 把这个扣的带上啊,去跳转到第三方应用的一个网站上啊,那我们这个接口就是颁发扣的的,颁发扣的之后啊,他又会重定向到啊,重定向到我们这个客户端最开始指定的这个地址上,比如说我们最开最后跳转的地址,其实就是这样子的啊,类 至于这样我们的一个扣的等于什么什么啊?然后会是我们什么是 get 等于什么什么啊?是这样的一个地址, ok, 然后我们这里跳转的话,就是用这个有一个路由去接的啊,就我们当前服务器底下有一个这样的一个雍正 autores 的一个路由啊, 啊,这个路由主要做几件事啊,就是获取授权码扣的,并且从定向, 从定向到啊 red rick ur 二,他就做这么一个操作啊,然后我们尝试着登录啊,我们尝试着登录一下啊,他就会去跳跳转到这个啊,这个地址啊,这个地址,这个地址就是 杠二十的一个地址。杠二十地址是我们客户单网站啊,我们又回到客户单网站上啊,客户单网站的一个杠二十的一个地址。嗯, 刚奥斯的地址的话,我们可以在 home 底下有一个奥斯。那奥斯跳转过来之后啊,那刚才我们说这个授权服务器已经颁发了一个扣的啊, 并且他会携带一个 state, 那这个扣的和 state 我们就会打印一下,我们这里会打印可以看到这个 state 它是原封不动的拿过来的。比如说我们, 我们最开始啊跳转过去的时候, state 传的是啊这个数啊,然后我们跳过来的时候啊,他的 state 还是这个数啊,然后这个扣的的话,是服务器临时生成的一个唯一的一个扣的啊, 那拿到这样一串东西,我们接下来要做什么事呢?我们就要拿这个 cod 去请求这个 ansis talking, 回到这个,回到这个流程上啊,我们拿到 cod 之后啊,加上我们的 a p p id 这些参数,我们去要取这个 excess talking, ok, 我们就会调这个 excess talking 的一个接口啊,就是我们要在客户端里面去调授权服务器取 talking 的一个接口啊,就是 users 杠 talking 啊, 然后传一个授权模式啊,然后扣的,扣的就是刚才颁发的扣的,然后再加上我们当前客户端的唯一 id, 我们客户端的唯一的一个密要, 然后再就是一个从定向地址啊,拿到这些参数之后,我们调这个 user token, 取这个 answes token, user token 是授权服务器上的一个接口地址啊,他这是第二个接口啊,这个接口, 那这个接口就是其实就是根据数学码扣的啊,去获取一个 xs talking, 还有我们的一个 reverse talking 啊, 啊,这个 refers token 和安 stop token 的作用啊,我后面会去再讲一下,大家只需要记住啊,这个接口他是获取 token 的啊, 那获取到 token 之后啊,我们拿到这个 token 里面的这个 answer token 啊,就可以去调用用户信息的一些接口了,就是还是这个授权服务器上的一个用户信息的一个接口啊, 就对应到我们这个流程的啊,后面后面几步了啊,我们拿 enses token 去掉这个用户信息啊,就是这样操作的,这个取 token 啊和获取用户信息啊,基本上都是在这个后台服务器上啊一步完成的,然后我们 最后将拿到的用户信息要打印在这个啊页面上,其实就是我们现在看到的这个效果 果啊,他的用户信息已经能正常打印了,也就是说我们这个获取用户信息的接口也掉了,成功了,我们看一下这个接口是怎么实现的, 他是在授权服务器上这个,然后有一个这个接口啊,这个是通过安生 token 取用户信息啊,仅登录成功之后可以访问。嗯,他也是用了一个 iggs 的一个插件啊,然后会调到优热了这个接口上,这个接口的话是这样子的 啊,这个接口,这个接口获取用户信息,获取用户信息的时候,他妞会从这个 statement 里面啊,取到这个 token 啊,然后拿到 token 就能拿到这个 token 里面包含的这个用户 id 啊, 然后我们就可以啊,做一些权限判断之类的,或者返回用户信息啊啊,这个就是实现了 啊,这个啊,用户信息的一个根据 token 的一个认证授权的一个返回啊,包括这里啊,我们刚才去取这个,呃,拿到这个 token 之后,我们不是打印了一下吗?其实就是这一串啊啊, 然后这里面就会有可以看到有这个 inside token 和这个 reviss token, 那 insides token 就是请求这个用户信息的一个 token 啊,就是这样子用的。 然后呢? refis token 是做啥的? refire token 就是针对我们 excess token 啊,过期之后啊,我们可以拿这个 refice token 去置换一个新的 excess token。 那要实现这样效果呢,就得保证我们瑞弗 s token 啊,他的这个时效性啊,要比这个安赛 token 要大啊,一般我们 ss token 可能就是一个小时过期,那我们的这个瑞弗 s 套卡可能就是半年啊,才过期这样一个时间。然后我们看一下这个或许用户星星的接口啊,是直接掉,我们拿这个 pose 麦试一下啊,我们把这个安赛套卡的粘住了啊, 这个安史涛肯只有二十秒啊,我们刚才试的时候,现在应该已经过期了,我们拿安史涛肯去请求一下用户星星,他应该是会爆这个四零幺的。 哎,可以看到这个 answer token 已经过期了啊,那过期我们刚才说可以拿 refised token 去置换,对吧?那我们拿这个 refised token 调 refised token, 根据 refised token 去置换这个新的 answer token 的接口啊,我们还是调这个 user token 接口啊,我们点击请求一下。 哎,可以看到啊,我们这里已经有一个新的 iza token 了,然后我们拿到这个新的 iza token 之后啊,就可以 拿它再去掉这个获取用户信息了, ok, 然后这样用户信息又能正常拿到了啊,这样就实现了一个这个啊,拿 refs token 啊,去置换新的 asset token 的一个功能啊,然后我这个 asset token 只有十来秒啊,可能一会就过期了。 ok, 看他已经过期了啊,那这个其实就是一个完整的这个叫授权版模式啊,叫授权版模式。 然后我们刚才看到啊,其实除了授权版模式,他还有一个密码模式啊,那密码模式,密码模式他跟授权版模式有什么区别呢?我们来给大家讲一下。 那授权版模式的话,他有一个根据这个扣的啊,根据扣的会从天上回来啊, 从定向回来之后啊,再拿扣的再去请求这个 token。 那密码模式的话,是没有这个重定向这个操作的,直接第三方应用啊,可以根据这个呃用户名的密码,再加上 app id, app 密,要这些直接去掉啊,这个授权服务器的接口去请求 token。 怎么做呢?我们看啊,我们这里就是有一个密码模式啊,我们的 grown type 就要改成这个叫密码,然后我们要传客户端的 id 密,要用户名密码,这个相当于就把这个用户名密码直接告诉给第三方,这个叫授权服务器了啊, 告诉他之后,我们直接去调上这样一样接口啊,就可以直接拿到我们的一个叫 insize talk 呀,他说我们缺了用户名啊,我们 传一个参数啊, ok, 可以看到他已经拿到 s s token 啊,他没有重定向也没有扣的的概念啊,拿到这个 ss token 的时候,我们拿这个 token 啊,就可以直接去掉我们的用户信息的接口了, 大家可以看到这个用户信息也是能正常返回回来的啊。 ok, 这个就是一个密码模式啊,那我们再看一下,他还有一种模式叫简化模式啊,我们简单给大家介绍一下,简化模式的话, 相比于授权法模式啊,他没有哪些操作呢?就简化模式的话,这里用户确认之后啊,他从定向的时候,从定向回去的时候,他除了携带扣的啊,除了携带扣的,他就会直接携带一个 ss token 啊, 这就是简化模式啊,就是我们不用再拿扣的去请求按 size token 了,这个重定向的时候,这个按 size token 啊,就直接啊返回给我们第三方应用了,我们应用就直接可以在 url 或者重定向的这个地址里面直接去拿到它,这个就是简化模式, 简化模式的话,他首先是不安全啊,他不支持这个 refax token, 因为 token 的话是直接在这个浏览器的 ur 里面传输的确实是不安全的,还有一种模式啊,就是我们的这个叫, 这个叫客户端模式啊。客户端模式,那客户端模式是什么意思呢?就是说我们其实没有这个微信用户这个这个角色啊,我们客户端模式下午第三方应用啊,是直接去掉这个授权服务器的接口啊,相当于 直接是纯后台操作的,不需要用户去接入啊,啊,这样一种模式的话,就可以直接根据我们的客户端的 id, 然后客户端的密要啊,直接去 啊,去请求一个安赛涛肯啊,拿到安赛涛肯之后啊,那后面的操作是一样的啊,可以拿涛肯去换取用户信息啊,不需要这个微信用户啊,不需要拥护这个角色去参与啊,这个也比较简单啊,当然也有一些风险啊,那这种就比较适合一些什么场景,比如说 我们一些什么天气预报查询呀,或者一些汇率行情查询啊,这种单纯的一些不需要用户介入的一些业务场景呢,就比较适合这种啊。我给大家如果想要这个原码的话,可以私信我,可以发给大家,然后一起学习啊, 包括这个客户端和服务端的一个源代码啊,他是 note g s 写的啊,哎, note g s 的话,他有现成的一些差价啥的,比较方便啊,有问题的话也可以私信我,谢谢大家。


第三个问题是一个啊,多语言啊,多语言的问题,我们呢目前是支持两种,一个中文一个英文啊。我先关掉, 我们这个中英文是在这里去设置的,有一个个人设置,这里有一个语言设置啊,好,我们设置成英文保存好,保存了之后你刷新一下, 他就切成了英文,当然这些都是英文了,包括我们里面的内容都是英文,对不对?但是呢,这个有有一个问题,就是说我们设计的时候,这些是我们自己去写的,他肯定是没有办法帮我们去翻译的,对不对啊?嗯,比如说 这个表单里面,这里你再去看到的时候啊,我们从这里打开看到的时候,他就是中文的,因为我们写的就是中文嘛,对吧?那我们怎么把它按照呃,根据我们这里设置的这个语言,嗯,模式去,嗯, 自动的去切换他的一个中英文。那我们讲一下啊,啊?我还是切到中文上面去做啊。 好,我刷一下,切到中文上面去做。好,我们回到我们的表单 报销审批单,对不对?我们昨天做过的啊,我们看右边这个属性区啊,拖到最下面,他有一个语言包的,那默认我们是没有语言包的,就是无,对吧?我们这里有三个选项,默认是无 五,你可以给他启用一下,比如说启用我们的默认,启用默认的话,他就会自动载入我们这边 你这个数据字典里的配置,或者是脚本配置。然后它是有一个呃起名的模式的,一个是 n, 是 lp 杠什么?那比如说我们中文就是 lp 杠 z h 杠 cn, 那如果说是英文就是 lp 杠 en, 是这样子的一个起名方式啊,就看你写在哪里都可以。 好,或者是说你根据你的脚本去写,你到底要返回哪一个语言包啊?好,那我们就使用默认。好,我们默认的话我们去做一下,我们就以这个啊,数据配置为例啊,这个都是,呃, 一样的,当然你在脚本里面写也是行的。好,我们新建一个数据字典,数据字典我们刚刚讲过了,他 他起名是有这个规范的啊,啊? p 杠一,嗯,这个,这个就是代表他英文呢,你必须是这样子去写的,不然他识别不出来的啊。 好,这里我们给他加一个,加一个,这,这里面其实返回的就是一个那个节省的数据啊,这里比如说我们给他起一个啊,应付啊,应付啊,就我们基本信息嘛。啊,基本信息他是一个啊,不,杰克特,然后基本信息里面有一些什么东西呢?那我们就以标题为例啊, 标题,标题这个字段,我们给他加一个字段,加一个标题,比如说抬头这样一个标题字段,那他的英文对应的英文是什么呢?萨布杰克特, 对不对?这个我们就取,如果说是英文的时候,我们就取他的标题,是这个就是赛布杰克特。好,这个是我们英文的,那么我们再去做一个中 中文的啊,中文的,中文的取名 l p 杠 z h 杠 cn, 好,表面我们要写一下啊。好,同样的,我们这里这里是英孚,就基本信息 object, 然后这里我们再加一个,就是还是同样的抬头,对不对?啊?那我们这里是中文的,中文的是什么标题 对不对?好,这样子,那我们这里已经配置好了,怎么去用呢?我们来看一下啊。来,已经有了,这里已经有了,怎么去用? 首先还是回到我们这个标题啊,这里的取值我们之前是写死的,就是一个标题,那我们现在是要取我们的配置文件。取配置文件 是什么呢?有一个固定的格式啊,花括号,两双重花括号,然后 donna, 哎呀, donna 点 lp, 点 date, 点在这个就是获取到了我们这个语言包里面的数据了,然后我们要获取到的是这个 info 下面的抬头,对不对啊?好,那我们就点 info 点 抬头。好,这个时候我们去看一下,这个时候其实我们是这样的写的,对吧?那我们到首页啊,随便开一个, 你看他,他现在是标题,其实我们刚刚这里并没有写死是标题,对不对啊?他,但是他取到的是标题,其实他就取的是我们这里的这个中文的标题。那么 我们给他切到这个英文的再看一下啊,我们给他关掉,我先刷一下。好,关掉设置,我们把这个 保存一下。好,我们刷一下。 好,我们再打开这个看一下,那他就取到了我们英文的这个赛布杰克特。那是这样子的啊,就这样子就来实现我们的一个这个多语言。 好,嗯,这个是我们昨天那个,呃,嗯,大家提的呃,提问比较多的三个问题啊。

本文详细解读 rest for 设计原则,以及如何在 php 中实现 os 二点零安全的 api 全线控制。在现代 web 开发中, rest for api representational stage transfer 设计因其简洁、灵活和可扩展性而备受青睐。 rest for api 基于 http 方法,如 get、 post、 put、 delete 等,通过统一接口提供资源的操作,让客户端和服务器之间的交互更加直观。在 php 中实现 rest for api, 首先需要理解 crowd create, read, update, delete 操作,确保接口设计符合 restful 原则,如资源明确、无状态使用 http 方法等。 os 二点零是一种开放标准, 用于授权第三方应用访问用户的资源,而不必分享用户的评剧。在 php rest for api 中, os 二点零权限管理至关重要,他允许开发者以安全的方式控制哪些用户或应用可以访问哪些资源。 os 二点零包含四种主要角色 资源,所有者、客户端、授权服务器和令牌服务器。在设计时,你需要设置授权流程,包括获取授权码、访问令牌、刷新令牌等步骤。 实现 os 二点零全线管理,首先要在 php 中设置一个授权服务器,处理授权请求并颁发访问令牌。使用 phpos server 库,如 osr server php 可以帮助简化这个过程。接着, 你需要为每个资源定义相应的访问级别,例如公开受保护或仅限。管理员通过访问令牌中的权限信息来验证用户对资源的访问权限。在客户端,你需要验证接收到的令牌是否有效, 并根据其权限执行相应的操作。如果令牌过期或无效,应引导用户重新授权。此外,为了提高安全性,你还需要定期刷新令牌,防止令牌被恶意利用。 最后,要遵循 os 二点零的安全最佳实践,如使用 https 保护通信、实施严格的令牌验证和存储策略,以及定期审计日志,以便监控和应对潜在的安全威胁。总结来说, php rest for api 的设计与 os 二点零全线管 管理是相辅相成的。良好的 rest for 设计原则为 os 二点零提供了坚实的基础,而 os 二点零则为 api 的安全访问提供了强大的保障。通过深入理解并实践这些技术,你可以构建出健壮安全的 vip 服务架构。
