一位工作5年的小伙伴被问到这样一道面试题,说说你对OAuth的理解。当时这位小伙伴觉得回答的不是很满意,希望我做个视频详细介绍一下。今天,我就来说说我对这个问题的理解。1.什么是OAuth?OAuth是一个关于授权(Authorization)的开放技术标准,在世界范围内被广泛使用。它本质上是一种协议,可以在不共享用户用户名和密码的情况下实现来自应用程序的授权。另一个应用程序。如图:我们可以使用QQ或者微信直接登录京东APP,无需在京东重新注册用户。也就是说,用户可以在一个平台上登录,获得授权后,还可以在另一个平台上进行操作和查看数据。使用最广泛的场景是SSO(单点登录)。例如,主人不在家,来访者需要进房,主人不能告诉来访者门锁密码,而是提前给来访者发一张临时房卡,一刷就失效。向上。OAuth的工作方式与这种情况非常相似,其中一个应用程序不发送用户密码,而是向另一个应用程序发送授权令牌以授予用户访问权限。二、OAuth的工作原理我们知道,任何身份认证本质上都是建立在对请求方不信任的基础上的。OAuth的出现主要是为了解决多个应用之间的授权信任问题。OAuth交互过程中有四种参与角色,如图:分别是:ResourceOwner:一般指我们自己。客户端(Client):泛指需要授权的应用,如京东APP。资源服务器(ResourceServer):一般指保存信息的服务器,比如QQ密码、微信密码的服务器。授权服务器(AuthorizationServer):泛指提供API的服务器,如QQ的OpenAPI服务、微信的OpenAPI服务。一般来说,资源服务器和认证服务器是同一个服务,调用起来比较方便。OAuth的工作原理如图所示:第一步:客户端向资源拥有者发送授权请求,资源拥有者的资源一般会存放在资源服务器中。第二步:客户端会收到资源服务器的授权。第三步:客户端获得许可后,向授权服务器发送验证,并向客户端颁发AccessToken。第四步:客户端拿到token后,交给资源服务器。第五步:资源服务器将获取到的token传递给认证服务器,验证token的合法性。第六步:资源服务器验证token通过后,返回一个受保护的资源。在我们看到的流程中,最重要的一步就是第2步,即在第3步获取授权之前,客户端首先要申请license资源的内容,比如用户头像,用户昵称等。即客户端在向资源服务器申请授权时,需要填写授权所需的以下信息,即:应用名称、应用网址、重定向URI或回调URL(redirect_uri)、客户端标识client_id、客户端密钥客户秘密。此信息需要我们在。当然,OAuth一共设计了四种授权模式,分别是:AuthorizationCodeGrant。简化模式(ImplicitGrant)。密码模式(ResourceOwnerPasswordCredentialsGrant)。客户端模式(ClientCredentialsGrant)。限于视频时间,这里就不详细介绍了。有兴趣的朋友可以在评论区回复666,我可以单独拍视频讲解。3.关于OAuth2.0OAuth2.0是OAuth的最新版本。OAuth的第一个版本于2010年发布。OAuth2.0于2012年发布,修复了OAuth1.0中的多个漏洞。目前大家基本只用OAuth2.0。好了,以上就是我对OAuth的理解。
