一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。
Oauth 到底是为了干什么的
oauth 协议设计的目的,是资源拥有者,将他们在资源服务器上的部分权限,委托给第三方应用,让第三方应用可以代表用户执行操作。用户在平台上登录授权,生成访问令牌,传给第三方应用,第三方应用有了令牌,就有了用户的授权,可以执行约定好的一些操作。 第三方应用的逻辑处理也大大简化,只需要请求访问令牌、使用访问令牌、访问受限资源即可。这样不需要传输用户名密码,即使令牌暴露,受影响范围也很小。
访问令牌是什么
访问令牌就是第三方软件和用户的组合来生成的一个密钥,它包含用户的授权内容及授权操作,第三方应用可以用它作为凭证访问受限资源。
我们可以用 oauth 做哪些事
- 访问部分用户数据及进行部分数据的处理,比如委托三方应用处理订单,这个的前提是订单服务有开启授权服务,支持 oauth,然后第三方应用才能接入
- 接入第三方登录
应用案例
这里有一个应用,接入了第三方登录,目前的流程
- 本地内嵌了 sso 登录系统 1,支持用账号体系1登录
- 登录过程中登录账号体系 1 的账号
- 拿账号体系 1 的账号同步到本地账号体系,存在则用本地账号,不存在则新建账号 这个流程有个问题,如果接入了其它的账号体系,那怎么办?整个体系是耦合的,因为已经内置了登录系统1,而且退出登录肯定也需要业务系统1退出登录
这里有两种结局方案,第一种用 oauth,把账号同步过来,需要登录系统支持 oauth; 第二种就是做一个服务,登录后跳转到业务方登录,登录后将信息通过回调的方式写入中间系统,中间系统通过渠道 +id 的形式标注唯一 id,然后关联用户表;