基础概念用户访问某个网站的资源,而不必记住该用户在这个网站的账号密码。假如我正在访问“思否”,看到一篇文章不错,想要评论,但是评论就要先登录,我比较懒又不想注册“思否”,于是“思否”这个网站就提供了微信登录,即向微信请求读取我的个人信息去登录“思否”,在这个过程中,Authorization server:授权服务器,比如微信授权服务器Resource server:资源服务器,和授权服务器可以是同一个服务器,也可以不是同一个HTTP service:服务提供商,如微信client:客户端,如网站“思否”Resource Owner:资源所有者,如用户OAuth2认证流程(1)客户端向授权服务器请求访问资源所有者的资源->(2)资源所有者”同意”授权,授权服务器则返回code(授权码)给客户端->(3)客户端拿code去授权服务器请求token(一般在客户端后台实现)->(4)授权服务器验证code的真伪,若真则返回token->(5)客户端拿到token,就可以去资源服务器请求访问资源->(6)资源服务器验证token正确则返回资源OAuth2定义了四种类型的授权模式授权码模式密码模式简化模式客户端模式授权码模式流程最严密的验证模式,其步骤与上面所述的“OAuth2认证流程”基本一致:(1)第三方客户端向授权服务器请求访问资源所有者的资源:假如我正在访问“思否”,看到一篇文章不错,想要评论,但是评论就要先登录,我比较懒又不想注册“思否”,于是“思否”这个网站就提供了微信登录,点击思否的“微信登录”后,会跳转到微信提供的页面向用户确认是否授权“思否”读取我的信息(微信提供的页面对应微信后台的授权服务器),如图(2)资源所有者”同意”授权,授权服务器则返回code(授权码)给第三方客户端:我扫码登录微信,代表同意授权给“思否”读取我的微信个人信息去登录,此时微信授权服务器会重定向到一个事先指定的“重定向url”,并返回一个code(授权码),假如这个url是“思否”网站的网址,则会重定向回到“思否”,如图(3)第三方客户端拿code去授权服务器请求token(一般在第三方客户端后台实现):“思否”拿到code(授权码)之后,带上“重定向的url”,继续去微信授权服务器请求token(4)授权服务器验证code的真伪,若真则返回token:微信授权服务器拿到code(授权码)、“重定向的url”之后,验证code,并验证“重定向的url”是否就是事先指定的“重定向url”,若是则返回token给“重定向url”,即“思否”(5)第三方客户端拿到token,就可以去资源服务器请求访问资源:“思否”拿到token后,就可以真正向微信请求访问我的个人信息(6)资源服务器验证token正确则返回资源:微信服务器收到token后,验证成功后返回我的个人信息给“思否”简化模式相比授权码模式,简化模式省去了code(授权码),它直接向授权服务器申请令牌,所有动作都在浏览器页面完成密码模式用户直接把账号密码给第三方客户端,第三方客户端再拿账号密码去向服务方索要授权,这样第三方客户端就可以访问用户信息了,但是同时第三方客户端要遵守不存储密码的规则,这种一般用于用户对第三方客户端高度信赖的基础上客户端模式服务方事先提供给第三方客户端一个client_id和client_secret,第三方客户端每次请求服务方访问用户的信息时,只需要提供事先拿到的client_id和client_secret给服务方,服务方拿到client_id和client_secret后验证无误就生成token给第三方客户端,此时第三方客户端就可以访问用户数据了
创业项目群,学习操作 18个小项目,添加 微信:923199819 备注:小项目!
如若转载,请注明出处:https://www.zodoho.com/135197.html