banner
NEWS LETTER

OAuth2.0相关

Scroll down

OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务上的信息,而不需要将用户名和密码供给第三方应用或分享他们数 据的所有内容。

OAuth2.0流程示例

​ OAuth认证流程,就是允许我们将之前实现的认证和授权的过程交由一个独立的第三方来进行担保。而OAuth协议就是用来定义如何让这个第三方的担保有效且双方可信。

  1. 用户希望登录百度,访问登录百度后的资源。而用户可以选择使用微信账号进行登录,实际是将授权认证的流程交由微信(独立第三方)来进行担保。
  2. 用户以扫描二维码的方式,在微信完成登录认证。
  3. 在微信选择同意后,进入百度的流程。这时,百度会获取用户的微信身份信息,与百度自己的一个注册账号完成绑定。绑定完成了之后,就会用这个绑定后的账号完成百度的登录流程。

在这个登录认证的过程中,实际上只有用户和百度之间有资源访问的关系,而微信作为一个独立的第三方,使用用户在微信里的身份信息,来对用户的身份进行了一次担保认证。 认证完成后,百度获取到用户的微信身份信息,进入自己的后续流程,与百度内部的一个用户信息完成绑定及登录。

OAuth2.0baiduLoginWechat

OAuth2.0协议

OAuth2.0

OAuth2.0协议包含以下几个角色:

  1. 客户端 - 示例中的浏览器、微信客户端

    本身不存储资源,需要通过资源拥有者的授权去请求资源服务器的资源

  2. 资源拥有者 - 示例中的用户(拥有微信账号)

    通常是用户,也可以是应用程序,即该资源的拥有者。

  3. 授权服务器(也称为认证服务器) - 示例中的微信

    用于服务提供者对资源拥有的身份进行认证,对访问资源进行授权,认证成功后会 给客户端发放令牌(access_token),作为客户端访问资源服务器的凭据。

  4. 资源服务器 - 示例中的微信 和 百度

    存储资源的服务器。本示例中,微信通过OAuth协议让百度可以获取到自己存储的用户信息,而百度则通过OAuth协议,让用户可以访问自己的受保护资源。

    • **clientDetails(client_id)**:客户信息。代表百度在微信中的唯一索引。 在微信中用appid区分
    • secret:秘钥。代表百度获取微信信息需要提供的一个加密字段。这跟微信采用的加密算法有关。
    • scope:授权作用域。代表百度可以获取到的微信的信息范围。例如登录范围的凭证无法获取用户信息范围的信息。
    • access_token:授权码。百度获取微信用户信息的凭证。微信中叫做接口调用凭证。
    • grant_type: 授权类型。例如微信目前仅支持基于授权码的 authorization_code模式。而OAuth2.0还可以有其他的授权方式,例如输入微信的用户名和密码的方式。
    • **userDetails(user_id)**:授权用户标识。在示例中代表用户的微信号。 在微信中用openid区分.

什么是SSO,与OAuth2.0有什么关系

OAuto2.0使用场景通常为联合登陆。一处注册,多处使用。

SSO使用场景为单点登录。一处登录,多处同时使用。eg:淘宝登录/退出后,天猫同时登陆退出。

SSO的实现关键是将Session信息集中存储。

其他文章
目录导航 置顶
  1. OAuth2.0流程示例
  2. OAuth2.0协议
  3. 什么是SSO,与OAuth2.0有什么关系