本文以通俗易懂的方式解析了用户授权的设计原则及四种授权模式,重点解析了授权码登录模式。适合读者:开放平台/第三方合作的产品经理,刚入职场的产品经理。
1. 应用场景
我们每个人都遇到过授权登录的过程,授权登录的应用无处不在,也许你在授权应用权限,也许你在授权账号登录,也许你在授权个人信息。
我们常见的应用场景一般有以下几种:
所以授权登录是应用间交互中一个重要且广泛的步骤,需要深入了解其中涉及的原理。
2.什么是授权登录?
以美团外卖授权获取您的头像和地理位置为例:
字面意思如下:
值得注意的是第3步和第4步:你在授权的过程中,其实是你和微信的直接交互,和美团外卖小程序是没有任何关系的。
也就是说:你同意和微信进行授权,微信接收到你的“同意”指令。当你用微信登录网站时也是如此,比如豆瓣,需要微信扫描二维码,确保授权动作是保留的,并且发生在微信自己的环境内。
3.授权登录模式
授权登录从形式上分为静默授权、手动授权两种模式:
4 原理与分析
上面第二点是对授权的一个基本简化,本节主要讲解系统链接流程(无论是静默还是手动,系统链接都是一样的,只是形式不同),目前市场上涉及授权、权限申请的业务都是通过这种方式设计的。
具体可分为以下四种类型:
授权码模式(code)【重点】简化模式()密码模式()客户端模式()4.1 授权码模式
其中最重要的是第一种授权码模式,接下来我就来分析一下企业微信授权码的方法,它的流程图非常清晰。
示例解释:
场景:该身份授权是用户在企业微信中使用第三方应用时拉起授权页面的过程,类似于在微信中打开饿了么小程序。
系统交互步骤:
用户在企业微信中打开一个应用A,此时应用A通过静默推送获取到用户的信息,发现应用A的数据库中没有该用户的头像和昵称信息,此时应用A调用企业微信的认证链接,这个链接中必须携带企业ID(表明应用方)、权限获取范围(头像+昵称)、本次授权的编号()以及授权后要跳转的地址。链接制作完成后发送给微信,企业微信收到请求后验证企业ID和授权跳转的地址是否对应,如果验证成功,企业微信会给应用A一个(code),并在前端打开企业微信的授权页面(该页面由企业微信管理)。用户点击授权后,企业微信便可使用code并向企业微信请求用户信息API获取用户,最终获取指定的用户信息。 同时,用户点击授权后,企业微信关闭授权页面,跳转到步骤2中应用A提供的跳转地址。4.2 简化模式
请记住,第一种模式中的步骤(1)和(2)都需要应用程序A来处理,而简化模式则简化了步骤(2)。
以下微信中的场景仅作为示例:
用户点击应用入口后,微信直接询问用户是否同意授权(授权内容和触发时间都是提前配置好的),用户点击同意。用户同意后,跳转到应用在后台预留的地址,微信直接把访问令牌告诉应用,应用通过访问令牌找到微信获取用户信息,流程就完成了。
这里大家有没有注意到,之前的授权流程是不需要应用本身参与的,相比授权码模式要简单一些。但是该模式不支持用户的更新,也就是用户第一次授权过期后,下次需要再次进行手动授权。
4.3 密码模式
这种模式非常直接,相当于把你的微信账号密码告诉饿了么,饿了么利用你的账号密码来获取信息,这种方式极其不安全,用户的账号信息随时可能被泄露。
4.4 客户端模式
这其实不算是授权,其实是两个应用之间直接的信息传递,与用户无关。
5.总结 授权分为静默授权和手动授权,通常出现在打开应用登录的过程中,应用广泛。授权的组件或页面必须在拥有该数据的应用内,这样既保证了用户在授权页面同意协议,又清楚看到传输数据的范围,保证了用户亲自同意授权。授权分为四种模式,其中授权码模式是应用最广泛、最重要的模式。授权码模式是指应用A拼接企业参数请求企业微信打开授权页面,获取用户授权码code,再利用该code获取用户的,最终获取用户信息。 相关阅读
API入门(一):理解API文档
API入门(一):理解API文档
作者:我就爱睡觉,从事电商、金融行业,主要做TO B业务,文章用来记录自己对产品工作的思考和思路,希望和有想法的朋友交流。