OAuth的三种认证方式

三种认证方式:
(1)Resource Owner Password Credentials Grant(资源所有者密码凭据许可)

(2)Implicit Grant(隐式许可)

(3)Authorization Code Grant(授权码许可)

资源所有者密码凭据许可:
     比如说,你有某个网站的账号和密码,你就可以通过账号密码登陆以后在这个网站上你自己的资源进行操作。

隐式许可:
     比如说,你想要登陆一个小型的网站,对这个网站的资源进行操作,但是,这个网站太小了,你不能完全的信任,不放心把自己的密码交给他,那么这时候该怎么办呢?小型的网站一般是这样操作的,当需要账号密码登陆的时候,会重定向到大型网站的认证登陆系统去登陆,大型网站会让你输入账号密码登陆,并且询问你是否允许这个小型网站来访问这个大型的网站,如果你确认的话,那么将页面重定向到小型网站,同时捎带一个“token”,这时候小型网站可以通过这个token去访问大型网站获取你的用户信息。在整个过程中,小型网站是不会接触到用户的账号和密码的。
     又有一个问题:大型网站是如何信任这个小型网站的呢?当然,小型网站还是需要在大型网站上去注册的,大型网站会给小型的网站发送add_id,app_secret,通过这两个东西去唯一标识这个小型网站,并对他发送token

图解隐式许可:
OAuth的三种认证方式_第1张图片
token:
     token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

 授权码许可
     token是以明文(url中携带token信息)的方式发送给浏览器,虽然是https不会被别人窃取,但是在浏览器的历史记录和访问日志中都能找到。那么有什么办法可以解决吗?当然,仅仅只有token是不够的,这时候还需要授权码将token隐藏。

图解授权码许可:
OAuth的三种认证方式_第2张图片
需要注意的是:
     授权码虽然也是暴露的,但是这个授权码是和add_id和app_secret相关联的,所以就算授权码被获取到也是无用的。













你可能感兴趣的:(面试知识点)