小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
在2021年,互联网飞速发展的中端时间,每个人已经离不开手机电脑...各种各样电子产品,电子产品是我们获取信息最快的方式之一,网页,小程序,app,客户端等应用层出不穷,在每个人的生活中都有着不可分割的一部分。而在这些应用的背后是一台或者多台服务器支撑着应用的运行。
每个人都可以打开这些应用,但是应用不属于任何人,你只有认证了才会给予你一定的权利,而这就是今天的主题。
什么是Oauth 2
Oauth是开放授权的一个协议标准,它是指用户授权第三方应用访问存储在另外服务提供者上的信息,而不需要将用户名密码提空给第三方应用,或者分享数据的内容。一般返回给第三方一个校验成功这种认证通过的提示。这样的好处就是用户可以无感的登录各个应用从而感觉不同服务的应用就是一个应用,其次可以提高认证的安全性,因为我在这个服务器已经登陆过了,那我只要同意第三方服务器登录通过我现在的服务器发给第三方服务器,然后第三方服务器去请求认证中心,然后帮我进行自动的token颁发。
eg: 每次登录第三方应用时,下方会有一个 qq登录,微信登录...这些就是标准的认证中心。
Oauth2的四种认证方式
每个服务器之间的通讯如何保证你是就是你,而不是别人呢?这就需要令牌,拿着你的牌子人家就知道是你,而如何获得这个令牌你就需要走以下四个流程。
授权模式
用户请求授权认证服务器,这个认证可以是我们的也可以是第三方权威认证服务器,然后认证服务器返回授权码,客户使用授权码请求我们服务器获取token接口,我们服务器颁发token。流程走完
密码模式
用户使用账号和密码请求服务器,我们服务器返回token,用户携带token访问我们应用。
客户端模式
一般用于应用创建,应用创建后我们服务器生成appId 和 appKey,然后使用appId和appKey请求我们服务器,我们服务器使用appId和appKey请求认证服务器,然后我们服务器颁发token。
简化模式
用户请求认证服务器,认证服务器返回授权码给我们服务器,注意这里的授权码返回时我们的服务器并不是用户,然后我们服务器用授权码请求认证服务器,然后颁发token。
总结
- 授权模式与简化模式非常相似,主要区别在于是否给与用户
- Oauth2只是协议标准,并不是框架
- 客户端模式常用于第三放对外应用创建