Oauth授权机制实战
Oauth全称为Open Authorization。
OAuth协议为用户资源授权提供了一个安全的、开放、而又简易的标准。
一、常见的重要流程有:
(设OECP为第三方服务端开发系统,支付宝为开放OAuth认证服务提供商)
1.开始用户访问OECP
2.OECP请求支付宝的登录页面
3.用户扫描登陆二维码(确认输入登录信息),输入账号始终在支付宝页面
4.支付宝返回登录结果(不包含用户敏感信息)
5.OECP返回登录状态
二、应用场景:
支付宝用户授权阿里云使用其支付宝账号相关的信息
获取授权后,在符合权限规则的情况下访问各种API
三、项目实战
根据One ErrorCode Platform(OECP)项目需求,需要提供支付宝登录功能。
分析:经过开发时间安排与技术分析,我们选用了web系统进行OECP系统的开发,其中,支付宝登录功能涉及前端与后端交互,这里进行详细分析与讲解。
三个重要步骤
1.OECP请求支付宝的Oauth登录页面
收到支付宝登录请求后,前端会获取支付宝Oauth登录地址,根据支付宝开放文档,登陆地址为
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm,必传参数为:app_id,redirect_url
打开支付宝的Oauth登录页面如图所示:
2.用户在支付宝Oauth登录页面扫码(或输入支付宝账号和密码)
这里的操作是用户与支付宝进行的,不涉及OECP,所以OECP也不能从中获取(盗用)用户信息,当登录完成后,支付宝会生成登录结果,并根据redirect_url将信息返回给OECP,由OECP服务器决定下一步行动。
3.支付宝登录结果会回调给OECP的服务器
OECP的服务器收到支付宝信息,通常会带有支付宝生成的authCode,此authCode相当于ticket,只能使用一次,前端把authCode异步发送给后台服务器,服务器收到后使用authCode,并整合accessToken(有权访问用户授权的资源的令牌)再次请求支付宝,便可以获得用户的相关信息(如头像、昵称、国家城市等),到后台处理完后,会返回用户cookie给前端,前端利用这些信息,跳转至OECP主界面后,根据产品UI等需求进行定制化显示给用户。
此文章介绍得比较浅薄,有待继续深入分析。