Oauth2.0和Yii的邂逅(以己拙见实现第三方接口权限管理)
有关oauth2.0:阮一峰前辈讲解的很详细了,传送门http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
我用白话大致的说一下第三方登录的整个流程
application身份(也就是调用第三方登录的程序)
1.当用户点击某个第三方登录,将用户重定向到目标网站的登录授权页面。
2.接收第三方的请求,请求中有用户授权成功的授权码,接到授权码以后就去第三方网站申请令牌(access_token)。
3.以后就可以通过这个令牌去访问用户的信息啦。
(还有其他参数,比如授权信息,刷新令牌,从某种角度说,那些只是锦上添花的东西,没有行不行?我觉得行,当然可能是我忽略了什么,有知道的请指出)
第三方身份(接口提供者)
1.当用户访问登录授权页,让用户登录,登录之后让用户选择权限授权。
2.用户授权,系统在一张表中记录授权了app_id(使用token的应用id),access_token,person_id(授权人id),perssion(授予了哪些权限,是rule的参数)。
3.当第三方调用接口,首先认证第三方,然后Yii::$user->can(xxx)激活了对接口使用权限的认证,Yii会先找第三方被赋予了什么样的角色(权限)然后再找下级角色(权限),如果角色 或权限对应了某个规则,就通过这个规则来验证是否拥有该角色(权限),如果没有规则,存在就是拥有权限。一般来说,每个权限都会绑定一个规则,在当下,这个规则就是查询2步骤的那张表里第三方是否拥有token,有的话,是否用调用当前接口的权限。
(其实这个rbac是个前提,是在系统预设好了某些数据来定义角色,权限,规则的信息以及之间的关系)
用户身份
1.点击第三方登录,输入对应网站的账号密码,然后点登录。
2.登录成功后点击授权。
我们两边的开发者忙活半天就是为了让用户拥有这种极致的体验。
关于Yii2的rbac
我觉得这里关于rbac的介绍很详细了,传送门http://www.yiichina.com/doc/guide/2.0/security-authorization
当然,如果你是一个初次接触这些的新手,这对你无疑是一个挑战,因为这么复杂的一个过程,你没法像我一样跳出来一个身份一个身份的思考,因为每一环关联的细节都很多,相互穿插,一步连着一步。我的建议是,从头看到尾,理解大概意思,思考一下,大致的过程,最好有两个人,可以各自模拟身份,口头实现一下过程,然后再每一个点的去突破。
- 上一篇: yii2-restful的全局认证和局部认证的接口设置
- 下一篇: JNI详解