网站大全软件下载,前端需要学什么,深圳市住房和建设局官网在线申请,wordpress后台首页增加论坛帖子一、引言 1、什么是OAuth2.0#xff1f; OAuth 2.0是一个关于授权的开放网络协议#xff0c;允许用户授权第三方应用访问其在服务提供商上存储的资源#xff08;如照片、视频、联系人列表#xff09;#xff0c;而无需将用户名和密码提供给第三方应用。OAuth 2.0在第三方应…
一、引言 1、什么是OAuth2.0 OAuth 2.0是一个关于授权的开放网络协议允许用户授权第三方应用访问其在服务提供商上存储的资源如照片、视频、联系人列表而无需将用户名和密码提供给第三方应用。OAuth 2.0在第三方应用与服务提供商之间设置了一个授权层将用户与客户端区分开来使得第三方应用不能直接登录服务提供商只能登录授权层。服务提供商根据令牌的权限范围和有效期向第三方应用开放用户资源。 与OAuth 1.0相比OAuth 2.0不向后兼容且更加关注客户端开发者的简易性。同时OAuth 2.0为Web应用、桌面应用、手机和起居室设备提供了专门的认证流程。在认证和授权的过程中涉及的三方包括服务提供方用户使用服务提供方来存储受保护的资源如照片、视频、联系人列表、用户存放在服务提供方的受保护的资源的拥有者和客户端即第三方应用。
2、为什么要使用OAuth2.0原因 用户不再需要注册大量账号。在以前每使用一个新的网站或者APP都需要注册一个账号建立一套新的账户体系才能使用网站或APP提供的服务。而OAuth2.0简化了这个过程用户只需要授权给第三方应用就可以让第三方应用访问特定的资源。OAuth2.0可以实现单点登录。如果一个公司有很多个需要用户登录才能提供服务的子产品比如官网、APP、微信公众号等这种情况下为每个产品都开发一个登录、授权模块显然是不太优雅。使用OAuth2.0可以让所有需要登录的产品都请求同一个登录授权中心进行统一登录授权处理。OAuth2.0可以用于分布式系统的权限控制。因为基于OAuth2.0协议获得的令牌Access Token同时关联了接入的第三方应用、授权用户、权限范围等信息。因此在第三方应用拿着Token请求资源的时候资源服务应用就可以很容易根据其访问权限返回相应的数据。OAuth 2.0关注客户端开发者的简易性。它为Web应用、桌面应用和手机以及智能家居设备提供专门的认证流程。 3、作用
OAuth 2.0协议的主要作用是授权它允许用户授权第三方应用访问其在服务提供商上存储的资源如照片、视频、联系人列表而无需将用户名和密码提供给第三方应用。这个协议关注客户端开发者的简易性为Web应用、桌面应用和手机以及智能家居设备提供专门的认证流程。
在OAuth 2.0中用户通过客户端向服务提供方请求一个临时令牌该令牌授权第三方应用在特定的时段内访问特定的资源。用户只需授权一次就可以让第三方应用访问其存储在服务提供者上的信息而不需要每次都分享他们的访问许可或他们数据的所有内容。
对于第三方应用来说无需存储用户相关账号密码等信息对于用户访问来说省去注册用户等繁琐步骤。因此OAuth 2.0广泛应用于一些知名网站如QQ、微信、微博等授权第三方应用比如自己搭建的应用以获取知名网站用户的个人信息如昵称、性别、头像等。 二、协议流程 1、应用场景
第三方联合登录例如QQ、微信等提供的联合登录功能用户只需在第三方应用中授权就可以直接登录并访问自己的账户信息。开放接口许多大型互联网公司如蚂蚁金服、腾讯等会开放自己的API接口让第三方开发者可以接入并使用他们的服务。OAuth 2.0可以用于授权第三方应用访问这些开放接口从而获取或操作资源。应用与网站之间的数据共享例如一个用户可以在多个设备上使用同一账号登录某个应用或网站OAuth 2.0可以帮助实现数据的同步和共享。单点登录在需要多个账号登录的应用或网站中OAuth 2.0可以帮助用户使用同一账号登录所有应用或网站实现单点登录。设备授权例如智能家居设备用户可以通过OAuth 2.0授权第三方应用控制自己的智能家居设备。
步骤解读
在网站上面点击第三方授权重定向到第三方授权服务页面等待获取授权码 在手机上扫描二维码进行授权将重定向到客户端应用提供的URL。 客户端使用上一步获取的授权码向官方授权服务器申请令牌Token 官方授权服务器对客户端进行认证以后确认无误同意发放令牌 客户端使用令牌向资源服务器微信申请获取资源 资源服务器微信确认令牌无误后同意向客户端开放资源
2、角色 Third-party application第三方应用程序又称客户端client即例子中的Gitee。 HTTP serviceHTTP服务提供商简称服务提供商即例子中的微信。 Resource Owner资源所有者又称用户也就是你user。 User Agent用户代理比如浏览器。 Authorization server授权服务器即服务提供商专门用来处理认证授权的服务器。 Resource server资源服务器即服务提供商存放用户生成的资源的服务器。它与授权服务器可以是同一台服务器也可以是不同的服务器。 OAuth的作用就是让客户端安全可控地获取用户的授权与服务提供商进行交互。 主要角色 资源拥有者Resource Owner通常是用户拥有并授权访问其个人资源。客户端Client负责发起资源请求的应用或服务比如第三方应用。资源服务Resource Server存储并处理用户资源的服务器。认证服务器Authorization Server负责处理用户的授权请求颁发访问令牌。 3、认证流程 客户端向用户请求授权并出示自己的身份。用户在客户端的网页上输入用户名和密码然后授权该客户端访问所请求的资源。授权成功后服务提供方引导用户返回客户端的网页。客户端根据临时令牌从服务提供方那里获取访问令牌。服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。客户端使用获取的访问令牌访问存放在服务提供方上的受保护的资源。 A用户打开客户端以后客户端要求用户给予授权。 B用户同意给予客户端授权。 C客户端使用上一步获得的授权向认证服务器申请令牌。 D认证服务器对客户端进行认证以后确认无误同意发放令牌。 E客户端使用令牌向资源服务器申请获取资源。 F资源服务器确认令牌无误同意向客户端开放资源。 令牌的特点 令牌又时效性一般是短期的且不能修改密码一般是长期有效的 令牌可以由颁发者撤销且即时生效密码一般可以不用修改而长期有效 令牌可以设定权限的范围且使用者无法修改 在使用令牌时需要保证令牌的保密令牌验证有效即可进入系统不会再做其他的验证。 三、OAuth2.0授权模式 授权码模式Authorization Code这是最常用且安全级别最高的授权模式。在授权码模式下客户端首先通过用户在授权服务器上获取授权码Authorization Code。然后客户端使用这个授权码向授权服务器换取访问令牌。隐式模式Implicit这种模式适用于纯前端应用没有后端服务。客户端直接请求授权服务器获得访问令牌并将其存储在前端应用中以供以后使用。密码模式Resource Owner Password Credentials在这种模式下客户端直接从用户那里获取用户名和密码然后使用这些凭据直接向授权服务器请求访问令牌。客户端凭证模式Client Credentials在这种模式下客户端提供自己的凭证通常是一些证书或者API密钥来获取访问令牌。这种模式通常用于机器对机器的通信例如一个服务器向另一个服务器请求访问某个资源。 1、授权码模式Authorization Code 授权码模式是最常用且安全级别最高的授权模式。在这种模式下客户端首先通过用户在授权服务器上获取授权码。然后客户端使用这个授权码向授权服务器换取访问令牌。具体流程包括用户访问页面时重定向到认证服务器认证服务器给用户一个认证页面等待用户授权用户在认证页面上做出决定认证服务器接收用户的决定并返回授权码给客户端客户端在后台向授权服务器请求令牌并使用授权码换取访问令牌。 2、隐式模式Implicit 隐式授权模式适用于纯前端应用没有后端服务。在这种模式下客户端直接请求授权服务器获得访问令牌并将其存储在前端应用中以供以后使用。由于访问令牌是在客户端的浏览器中存储的因此存在一定的安全风险。 3、密码模式Resource Owner Password Credentials 在这种模式下客户端直接从用户那里获取用户名和密码然后使用这些凭据直接向授权服务器请求访问令牌。这种模式的优点是简单易用但存在安全风险因为用户密码可能会被泄露。 4、客户端凭证模式Client Credentials 在这种模式下客户端提供自己的凭证通常是一些证书或者API密钥来获取访问令牌。这种模式通常用于机器对机器的通信例如一个服务器向另一个服务器请求访问某个资源。这种模式的优点是可以减少对用户的依赖但需要确保客户端凭证的安全性。 流程总结
客户端向资源所有者请求授权。授权请求可以直接向资源所有者发起或者通过作为中介的授权服务器间接发起。客户端收到授权许可这是一个代表资源所有者的授权的凭据使用本规范中定义的四种许可类型之一或者使用扩展许可类型表示。客户端与授权服务器进行身份认证并出示授权许可请求访问令牌。授权服务器验证客户端身份并验证授权许可若有效则颁发访问令牌。客户端从资源服务器请求受保护资源并出示访问令牌进行身份验证。资源服务器验证访问令牌若有效则满足该请求。