1 基 于 OAuth2.0 的 认 证 授 权 技 术 时 子 庆 1, 刘 金 兰 1, 谭 晓 华 1 ( 天 津 大 学 管 理 与 经 济 学 部, 天 津 300072) 2 ( 天 津 大 学 机 械 学 院, 天 津 300072) 2 摘 要 : 开 放 平 台 的 核 心 问 题 是 用 户 验 证 和 授 权 问 题,OAuth 是 目 前 国 际 通 用 的 授 权 方 式, 它 的 特 点 是 不 需 要 用 户 在 第 三 方 应 用 输 入 用 户 名 及 密 码, 就 可 以 申 请 访 问 该 用 户 的 受 保 护 资 源 OAuth 最 新 版 本 是 OAuth2.0, 其 认 证 与 授 权 的 流 程 更 简 单 更 安 全 研 究 了 OAuth2.0 的 工 作 原 理, 分 析 了 刷 新 访 问 令 牌 的 工 作 流 程, 并 给 出 了 OAuth2.0 服 务 器 端 的 设 计 方 案 和 具 体 的 应 用 实 例 关 键 词 : 开 放 平 台 ; 开 放 API; 用 户 认 证 和 授 权 ;OAuth2.0 协 议 ;OAuth Server Authentication and Authorization Technique Based on OAuth2.0 SHI Zi-Qing 1, LIU Jin-Lan 1, TAN Xiao-Hua 2 1 (School of Management, Tianjin University, Tianjin 300072, China) 2 (School of Mechanical Engineering, Tianjin University, Tianjin 300072, China) Abstract: The essential problem of open platform is the validation and authorization of users. Nowadays, OAuth is the international authorization method. Its characteristic is that users could apply to visit their protected resources without the need to enter their names and passwords in the third application. The latest version of OAuth is OAuth2.0 and its operation of validation and authorization are simpler and safer. This paper investigates the principle of OAuth2.0, analyzes the procedure of Refresh Token and offers a design proposal of OAuth2.0 server and specific application examples. Key words: open platform; open API; authentication and authorization; OAuth2.0 protocol; OAuth server 1 引 言 传 统 互 联 网 时 代, 各 个 网 站 和 服 务 之 间 是 封 闭 的, 数 据 无 法 进 行 交 互 随 着 互 联 网 技 术 的 迅 猛 发 展 系 统 之 间 的 相 互 协 作 日 益 增 多, 开 放 与 共 享 数 据 的 需 求 不 断 增 加, 互 联 网 服 务 之 间 的 整 合 已 经 成 为 必 然 趋 势, 一 个 通 过 自 身 开 放 平 台 来 实 现 数 据 互 通 甚 至 用 户 共 享 的 时 代 已 经 来 临 把 网 站 的 服 务 封 装 成 一 系 列 计 算 机 易 识 别 的 数 据 接 口 开 放 出 去, 供 第 三 方 开 发 者 使 用, 这 种 行 为 就 叫 做 Open API, 提 供 开 放 API 的 平 台 本 身 就 被 称 为 开 放 平 台 2007 年 5 月 份,Facebook 宣 布 改 版, 最 早 提 出 了 开 放 平 台 的 概 念, 正 式 从 一 个 社 交 网 站 向 一 个 社 交 应 用 平 台 转 型 至 此, 开 放 平 台 发 展 迅 速, 成 为 互 联 网 发 展 的 趋 势, 也 是 一 种 革 命 性 的 发 展 模 式 国 内 外 已 经 有 很 多 的 公 司 开 发 了 自 己 的 开 放 平 台,Facebook Twitter 腾 讯 新 浪 微 博 人 人 网, 它 们 用 户 规 模 大 技 术 实 力 强, 为 第 三 方 提 供 了 一 整 套 自 成 体 系 纷 繁 复 杂 的 开 放 API 通 过 开 放 平 台, 网 站 不 仅 能 提 供 对 Web 网 页 的 简 单 访 问, 还 可 以 进 行 复 杂 的 数 据 交 互, 允 许 第 三 方 开 发 者 利 用 其 资 源 开 发 复 杂 的 应 用, 既 丰 富 自 身 网 站 应 用, 为 用 户 提 供 更 好 的 服 务, 逐 步 建 立 起 一 个 服 务 完 备 的 网 络 社 会, 也 为 第 三 方 连 接 的 网 站 带 来 更 多 的 用 户 开 放 平 台 迅 速 成 为 互 联 网 发 展 的 趋 势 开 放 平 台 的 核 心 问 题 在 于 用 户 验 证 和 授 权 对 于 服 务 提 供 商 来 说, 一 般 不 会 希 望 第 三 方 直 接 使 用 用 户 1 收 稿 时 间 :2011-07-13; 收 到 修 改 稿 时 间 :2011-08-21 260 专 论 综 述 Special Issue
2012 年 第 21 卷 第 3 期 http://www.c-s-a.org.cn 计 算 机 系 统 应 用 名 和 密 码 来 验 证 用 户 身 份, 除 非 双 方 具 有 很 强 的 信 任 关 系 OAuth 协 议 正 是 为 了 解 决 服 务 整 合 时 验 证 和 授 权 这 一 根 本 问 题 而 产 生 的 OAuth 协 议 为 用 户 资 源 的 授 权 提 供 了 一 个 安 全 的 开 放 而 又 简 易 的 标 准 与 以 往 的 授 权 方 式 不 同 之 处 是 OAuth 的 授 权 不 会 使 第 三 方 触 及 到 用 户 的 用 户 名 与 密 码 等 敏 感 信 息, 即 第 三 方 无 需 使 用 用 户 的 用 户 名 与 密 码 就 可 以 申 请 获 得 该 用 户 资 源 的 授 权 [3] OAuth 最 新 版 本 是 OAuth2.0, 其 认 证 与 授 权 的 流 程 更 简 单 更 安 全 本 文 研 究 了 OAuth2.0 的 工 作 原 理, 分 析 了 刷 新 访 问 令 牌 的 工 作 流 程, 并 给 出 了 OAuth2.0 服 务 器 端 的 设 计 方 案 2 OAuth2.0 认 证 授 权 技 术 2.1 OAuth 协 议 OAuth 1.0 已 经 在 IETF 尘 埃 落 定, 编 号 是 RFC5894 标 志 着 OAuth 正 式 成 为 互 联 网 标 准 协 议 目 前 OAuth 2.0 还 没 有 最 后 定 稿, 从 2010 年 4 月 到 2011 年 6 月, 该 协 议 已 经 发 展 出 16 个 子 版 本 OAuth 2.0 的 关 注 点 在 于 简 化 客 户 端 程 序 员 的 工 作, 以 简 化 实 现 为 原 则, 并 对 更 多 的 接 入 形 式 予 以 支 持, 如 按 照 官 方 的 描 述,OAuth 2.0 能 够 同 时 支 持 Web 应 用 桌 面 应 用 移 动 终 端 家 庭 设 备 等 等 OAuth 2.0 是 一 套 全 新 的 协 议, 相 信 经 过 多 年 的 发 展,OAuth 2.0 将 成 为 未 来 开 放 平 台 领 域 标 准 的 授 权 协 议, 并 且 随 着 技 术 发 展, 这 将 不 仅 仅 是 一 个 简 单 的 协 议, 而 会 成 为 一 个 解 决 各 种 环 境 下 授 权 问 题 的 标 准 的 协 议 族 2.2 OAuth2.0 此 文 所 介 绍 的 OAuth 的 工 作 流 程 和 服 务 器 端 的 实 现 等, 都 是 基 于 OAuth2.0 协 议 的 OAuth 2.0 协 议 的 新 特 性 主 要 表 现 在 以 下 几 个 方 面 : (1) 授 权 许 可 的 方 式 多 样 化 OAuth2.0 为 了 适 应 各 种 授 权 环 境, 把 多 种 客 户 端 流 程 和 多 种 授 权 许 可 的 方 式 结 合 起 来, 归 结 为 以 下 几 种 获 取 授 权 的 方 法 : Authorization Code: 客 户 端 是 web 服 务 器 程 序 的 一 部 分, 通 过 http 请 求 实 现, 是 OAuth 1.0 流 程 的 简 化 版 本 ; Implicit Grant: 客 户 端 运 行 于 用 户 代 理 内 ( 通 常 用 JavaScript 等 脚 本 语 言 在 浏 览 器 中 实 现 ); Resource Owner Password Credentials: 这 种 授 权 许 可 的 类 型 需 要 最 终 用 户 和 客 户 端 有 很 强 的 信 任 关 系, 客 户 端 可 以 直 接 使 用 资 源 拥 有 者 的 私 有 证 书 ( 用 户 名 和 密 码 ) 用 作 访 问 许 可 来 获 取 Access Token; Client Credentials: 客 户 端 使 用 它 的 私 有 证 书 (client_id 和 client_secret) 去 获 取 Access Token (2) 无 需 加 密 的 认 证 方 式 OAuth 2.0 提 供 一 种 无 需 加 密 的 认 证 方 式, 此 方 式 是 基 于 现 存 的 cookie 验 证 架 构,Access Token 本 身 将 自 己 作 为 secret, 通 过 HTTPS 发 送, 从 而 替 换 了 通 过 HMAC 和 token secret 加 密 并 发 送 的 方 式, 既 简 单, 又 安 全 OAuth2.0 也 对 签 名 机 制 进 行 了 也 大 大 的 简 化 (3) 用 Refresh Token 来 刷 新 Access Token 在 OAuth1.0 中, 授 权 服 务 器 会 发 行 一 个 有 效 期 非 常 长 的 Access Token( 典 型 的 是 一 年 有 效 期 或 者 无 有 效 期 限 制 ) 在 OAuth 2.0 中, 授 权 服 务 器 将 发 行 一 个 短 有 效 期 的 Access Token 和 长 生 命 期 的 Refresh Token 这 将 允 许 客 户 端 无 需 使 用 户 再 次 操 作 而 获 取 一 个 新 的 Access Token, 并 且 也 限 制 了 Access Token 的 有 效 期 3 OAuth2.0 的 工 作 流 程 3.1 重 要 术 语 Authorization Server: 授 权 服 务 器, 能 够 成 功 验 证 资 源 拥 有 者 和 获 取 授 权, 并 在 此 之 后 分 发 令 牌 的 服 务 器 ; Resource Server: 资 源 服 务 器, 存 储 用 户 的 数 据 资 源, 能 够 接 受 和 响 应 受 保 护 资 源 请 求 的 服 务 器 ; Client: 客 户 端, 获 取 授 权 和 发 送 受 保 护 资 源 请 求 的 第 三 方 应 用 ; Resource Owner: 资 源 拥 有 者, 能 够 对 受 保 护 资 源 进 行 访 问 许 可 控 制 的 实 体 ; Protected Resource: 受 保 护 资 源, 能 够 使 用 OAuth 请 求 获 取 的 访 问 限 制 性 资 源 ; Authorization Code: 授 权 码 ; Refresh Token: 刷 新 令 牌 ; Access Token: 访 问 令 牌 3.2 OAuth2.0 协 议 的 核 心 工 作 流 程 OAuth 为 客 户 端 提 供 了 一 种 代 表 资 源 拥 有 者 访 问 受 保 护 资 源 的 方 法 在 客 户 端 访 问 受 保 护 资 源 之 前, 它 必 须 先 从 资 源 拥 有 者 获 取 授 权 ( 访 问 许 可 ), 然 后 用 访 问 许 可 交 换 访 问 令 牌 (Access Token, 包 含 许 可 的 作 用 域 持 续 时 间 和 其 它 属 性 等 信 息 ) 客 户 端 通 过 向 资 Special Issue 专 论 综 述 261
源 服 务 器 出 示 访 问 令 牌 来 访 问 受 保 护 资 源 访 问 令 牌 提 供 了 一 个 抽 象 层, 将 不 同 的 授 权 结 构 ( 如 用 户 名 密 码 ) 替 换 成 资 源 服 务 器 可 以 理 解 的 单 一 访 问 令 牌 这 种 抽 象 使 得 分 发 短 期 有 效 的 访 问 令 牌 成 为 可 能, 也 使 得 资 源 服 务 器 不 必 理 解 多 种 多 样 的 授 权 机 制 使 用 OAuth2.0 机 制, 进 行 认 证 授 权, 获 取 访 问 令 牌, 并 通 过 访 问 令 牌 来 访 问 受 保 护 资 源, 如 图 1 所 示 : 者 的 受 保 护 资 源, 甚 至 是 修 改 受 保 护 资 源 ; 其 次, 如 果 这 个 访 问 令 牌 和 访 问 令 牌 密 钥 被 人 拿 到 的 话, 就 更 没 有 安 全 性 可 言 了 在 OAuth2.0 中, 授 权 服 务 器 将 发 送 一 个 短 期 有 效 的 访 问 令 牌 (Access Token, 一 般 有 效 期 是 24 小 时 ) 和 一 个 长 有 效 期 的 Refresh Token 当 Access Token 过 期 之 后, 第 三 方 出 示 其 私 有 证 书 (client_id 和 client_secret) 和 该 用 户 的 Refresh Token, 重 新 获 取 有 效 的 Access Token 和 Refresh Token( 可 选 ), 此 时,Refresh Token 担 当 起 了 访 问 许 可 的 角 色 这 样, 既 限 制 了 Access Token 的 有 效 期, 也 无 需 资 源 拥 有 者 再 次 操 作 去 获 取 一 个 新 的 Access Token [2] OAuth2.0 刷 新 访 问 令 牌 的 工 作 流 程 示 意 图, 如 图 2 所 示 : [2] 图 1 OAuth2.0 工 作 流 程 示 意 图 OAuth2.0 的 工 作 流 程 简 述 如 下 : (1) 客 户 端 从 资 源 拥 有 者 ( 最 终 用 户 ) 那 里 请 求 授 权 授 权 请 求 能 够 直 接 发 送 给 资 源 拥 有 者, 或 者 间 接 的 通 过 授 权 服 务 器 发 送 请 求 ; (2) 资 源 拥 有 者 为 客 户 端 授 权, 给 客 户 端 发 送 一 个 访 问 许 可 (Authorization Code); (3) 客 户 端 出 示 自 己 的 私 有 证 书 (client_id 和 client_secret) 和 上 一 步 拿 到 的 访 问 许 可, 来 向 授 权 服 务 器 请 求 一 个 访 问 令 牌 ; (4) 授 权 服 务 器 验 证 客 户 端 的 私 有 证 书 和 访 问 许 可 的 有 效 性, 如 果 验 证 有 效, 则 向 客 户 端 发 送 一 个 访 问 令 牌, 访 问 令 牌 包 括 许 可 的 作 用 域 有 效 时 间 和 一 些 属 性 信 息 ; (5) 客 户 端 出 示 访 问 令 牌 向 资 源 服 务 器 请 求 受 保 护 资 源 ; (6) 资 源 服 务 器 对 访 问 令 牌 做 出 响 应 3.3 OAuth2.0 刷 新 访 问 令 牌 的 方 式 OAuth 最 开 始 的 版 本, 是 为 第 三 方 发 放 一 个 有 效 期 非 常 长 的 访 问 令 牌 (Access Token), 有 效 期 是 一 年, 甚 至 是 无 期 限 限 制 如 果 这 样 的 话, 有 很 大 的 安 全 隐 患 首 先, 第 三 方 拿 到 这 个 访 问 令 牌, 如 果 是 无 限 期 的 话, 第 三 方 可 以 随 时 拿 着 访 问 令 牌 去 访 问 资 源 拥 有 [2] 图 2 刷 新 访 问 令 牌 OAuth2.0 刷 新 访 问 令 牌 的 工 作 流 程 简 述 : (1) 客 户 端 向 授 权 服 务 器 出 示 自 己 的 私 有 证 书 (client_id 和 client_secret) 和 资 源 拥 有 者 给 它 的 访 问 许 可 ; (2) 授 权 服 务 器 验 证 客 户 端 私 有 证 书 和 访 问 许 可 的 有 效 性, 并 分 发 一 个 访 问 令 牌 和 刷 新 令 牌 ; (3) 客 户 端 出 示 访 问 令 牌 向 资 源 服 务 器 请 求 受 保 护 的 资 源 ; 个 请 求 ; (4) 资 源 服 务 器 验 证 访 问 令 牌 的 有 效 性, 并 响 应 这 (5) 客 户 端 不 断 通 过 访 问 令 牌 向 资 源 服 务 器 请 求 受 保 护 资 源, 直 到 访 问 令 牌 过 期 ; (6) 访 问 令 牌 失 效, 资 源 服 务 器 返 回 一 个 错 误 信 息 ; (7) 客 户 端 出 示 它 的 私 有 证 书 和 Refresh Token, 来 请 求 一 个 新 的 访 问 令 牌 ; 262 专 论 综 述 Special Issue
2012 年 第 21 卷 第 3 期 http://www.c-s-a.org.cn 计 算 机 系 统 应 用 (8) 授 权 服 务 器, 验 证 客 户 端 私 有 证 书 和 Refresh Token 的 有 效 性, 如 果 有 效, 则 分 发 一 个 新 的 访 问 令 牌 ( 也 可 以 要 求 再 分 发 一 个 刷 新 令 牌 ) 4 OAuth Server 的 设 计 虽 然 OAuth2.0 还 没 有 最 后 定 稿, 但 是, 已 经 有 不 少 大 型 互 联 网 公 司 宣 布 支 持 OAuth2.0 协 议, 并 且, 现 在 已 经 有 公 司 实 现 了 OAuth2.0 机 制 的 验 证 和 授 权 OAuth 2.0 提 供 一 种 无 需 加 密 的 认 证 方 式, 使 认 证 过 程 更 加 简 单 安 全, 但 是, 验 证 信 息 必 须 要 通 过 HTTPS 发 送, 防 止 被 恶 意 截 取, 因 此, 需 要 购 买 SSL 证 书, 并 在 服 务 器 端 增 加 SSL 模 块, 配 置 HTTPS 服 务 OAuth2.0 服 务 器 端 的 设 计, 本 文 只 对 OAuth2.0 最 核 心 的 工 作 流 程 进 行 设 计, 即 获 取 Access Token 的 过 程 4.1 服 务 器 端 的 数 据 存 储 方 案 OAuth2.0 机 制 的 核 心 工 作 流 程, 大 部 分 信 息, 如 APP 信 息 用 户 和 APP 之 间 的 授 权 关 系 Access Token 等, 需 要 永 久 性 存 储, 存 储 在 数 据 库 中 一 些 不 需 要 永 久 存 储 的 信 息, 如 临 时 授 权 码, 只 使 用 一 次, 而 且, 在 很 短 的 时 间 内 就 要 使 其 失 效, 就 没 有 必 要 存 储 在 数 据 库 之 中, 可 存 储 在 譬 如 memcached 等 缓 存 系 统 中, 即 提 高 了 系 统 的 处 理 速 度, 又 减 少 了 数 据 库 压 力 数 据 库 表 结 构 设 计 : 客 户 端 要 先 注 册 一 个 应 用, 获 取 该 应 用 的 APPID 和 APPSECRET, 应 用 的 详 细 信 息 存 储 在 数 据 表 中, 如 表 1 所 示 : 表 1 appinfo APP 信 息 存 储 表 appid client_id appsecret client_secret appname 应 用 名 称 appowner 应 用 的 所 有 者 owneremail 应 用 拥 有 者 的 email appdescribe 应 用 描 述 status 应 用 是 否 通 过 审 核 callbackurl 跳 回 的 url addtime 添 加 时 间 客 户 端 与 资 源 拥 有 者 是 多 对 多 的 关 系, 如 下 表 所 示 : 表 2 authorize 授 权 关 系 存 储 表 appid 应 用 ID userid 用 户 ID addtime 添 加 时 间 表 3 access_token 访 问 令 牌 存 储 表 access_token 访 问 令 牌 addtime 添 加 时 间 Memcached 存 储 访 问 许 可 使 用 memcached 缓 存 系 统 存 储 临 时 授 权 码, 既 提 高 系 统 的 反 应 速 度, 又 减 少 数 据 库 的 访 问 压 力 Key:{authorization_code} Value: array{ appid=>client_id generatetime=> 授 权 码 产 生 的 时 间 isused=> 是 否 已 经 使 用 过 } 4.2 服 务 器 端 需 要 提 供 的 接 口 和 页 面 服 务 器 端 需 要 提 供 两 个 接 口 和 两 个 页 面 : 两 个 接 口, 一 个 是 用 来 获 取 访 问 许 可 的 接 口, 一 个 是 用 来 获 取 Access Token 的 接 口 ; 然 后 再 提 供 一 个 登 录 页 面 和 一 个 授 权 页 面 4.2.1 获 取 访 问 许 可 (Authorization Code) 接 口 客 户 端 从 资 源 拥 有 者 ( 最 终 用 户 ) 那 里 请 求 授 权 授 权 请 求 直 接 发 送 给 资 源 拥 有 者, 如 果 资 源 拥 有 者 为 该 客 户 端 授 权, 则 给 客 户 端 发 送 一 个 访 问 许 可 (Authorization Code): 传 入 参 数 : appid 应 用 ID callback_url 回 调 URL 返 回 信 息 : 未 登 录 未 授 权 : 跳 转 到 登 录 页 面 ; 已 经 登 录 未 授 权 : 跳 转 到 授 权 页 面 ; 已 经 登 录 已 经 授 权 : 跳 转 到 传 入 的 callback_url 页 面, 并 返 回 一 个 访 问 许 可 4.2.2 登 录 页 面 这 个 页 面 展 示 给 资 源 拥 有 者, 输 入 用 户 名 密 码, Special Issue 专 论 综 述 263
登 录 成 功 之 后, 如 果 未 授 权, 则 跳 转 到 授 权 页 面 ; 如 果 已 经 授 权, 直 接 跳 转 到 callback_url 页 面, 并 返 回 一 个 访 问 许 可 4.2.3 授 权 页 面 这 个 页 面 也 是 展 示 给 资 源 拥 有 者, 如 果 用 户 已 经 授 权 : 则 直 接 跳 转 到 callback_url 页 面, 并 返 回 一 个 访 问 许 可 ; 如 果 用 户 未 授 权 : 出 现 授 权 页 面, 授 权 成 功 之 后, 跳 到 callback_url 页 面, 并 返 回 一 个 访 问 许 可 4.2.4 获 取 Access Token 接 口 客 户 端 向 授 权 服 务 器 出 示 自 己 的 私 有 证 书 和 上 一 步 拿 到 的 访 问 许 可, 来 请 求 一 个 访 问 令 牌 (Access Token); 授 权 服 务 器 验 证 客 户 端 的 私 有 证 书 和 访 问 许 可 的 有 效 性, 如 果 验 证 有 效, 则 向 客 户 端 发 送 一 个 访 问 令 牌, 访 问 令 牌 包 括 许 可 的 作 用 域 有 效 时 间 和 一 些 属 性 信 息 : 传 入 参 数 : Appid 应 用 ID,client_id Appsecret client_secret callback_url 回 调 URL authorization_code 访 问 许 可 返 回 信 息 : Access Token,Access Token 中 包 含 APPID 和 用 户 信 息 userid 等 获 得 Access Token 之 后, 就 可 以 向 资 源 服 务 器 出 示 Access Token, 访 问 受 保 护 资 源 5 OAuth2.0 的 具 体 应 用 OAuth2.0 协 议, 解 决 了 在 开 放 平 台 中, 服 务 整 合 时 用 户 的 验 证 和 授 权 问 题 百 度 开 放 平 台 新 浪 微 博 开 放 平 台 腾 讯 开 放 平 台 的 用 户 验 证 和 授 权 都 是 用 的 OAuth1.0 协 议, 但 是 OAuth1.0 只 有 单 一 的 认 证 流 程, 认 证 过 程 复 杂, 用 户 体 验 差 2010 年 4 月,OAuth2.0 协 议 的 第 一 个 草 稿 出 来 之 后,Facebook 和 Twitter 甚 至 已 经 宣 布 在 官 方 发 布 第 一 个 草 案 前 的 就 会 开 始 支 持 OAuth 2.0 虽 然 OAuth2.0 协 议 还 没 有 最 后 定 稿, 但 由 于 它 的 种 种 优 点, 事 实 上, 已 经 有 支 持 OAuth2.0 的 产 品 了, 服 务 器 端 包 括 facebook 的 Graph Api, 客 户 端 方 面, 苹 果 的 iphone 和 ipad 上 也 已 经 有 具 体 实 现 了 2011 年 1 月, 人 人 网 开 放 平 台 OAuth2.0 验 证 授 权 服 务 正 式 上 线 人 人 网 开 放 平 台 是 国 内 第 一 家 实 现 OAuth2.0 验 证 授 权 协 议 的 平 台 目 前, 人 人 网 开 放 平 台 的 OAuth2.0 能 够 同 时 支 持 Web 应 用 桌 面 应 用 移 动 终 端 家 庭 设 备 等 等, 并 且 支 持 更 加 安 全 的 HTTPS 协 议 为 了 更 好 的 研 究 OAuth2.0 认 证 授 权 技 术, 我 们 在 人 人 网 开 放 平 台 创 建 了 一 个 应 用, 人 人 网 暗 恋 系 统 悄 悄 喜 欢 你 (qiaoqiaoai.com), 利 用 人 人 网 开 放 平 台 的 OAuth2.0 授 权 认 证 技 术 进 行 认 证, 获 得 Access Token 之 后, 利 用 Access Token 和 一 些 相 关 参 数, 调 用 人 人 网 的 开 放 API, 来 获 取 用 户 的 详 细 信 息 和 好 友 列 表 信 息 等, 完 成 暗 恋 系 统 的 功 能 目 前, 在 人 人 网 暗 恋 系 统 中, 通 过 OAuth2.0 认 证 授 权 的 用 户 已 经 迅 速 超 过 50 万 人, 可 见 开 放 平 台 不 仅 会 对 一 些 应 用 或 者 网 站 系 统 带 来 用 户 数 量 的 激 增, 也 会 推 动 互 联 网 向 更 加 开 放 的 模 式 改 革 6 结 语 OAuth 是 目 前 国 际 通 用 的 授 权 方 式, 它 的 特 点 是 不 需 要 用 户 在 第 三 方 应 用 输 入 用 户 名 及 密 码 其 最 新 版 本 OAuth2.0, 认 证 与 授 权 的 流 程 更 简 单 更 安 全 本 文 详 细 介 绍 了 OAuth2.0 认 证 与 授 权 技 术 的 工 作 流 程, 而 且 也 对 其 服 务 器 端 的 实 现 给 出 了 一 个 具 体 方 案 虽 然 OAuth2.0 还 没 有 最 后 定 稿, 但 相 信, 在 不 久 的 将 来,OAuth 2.0 将 成 为 未 来 开 放 平 台 领 域 标 准 的 授 权 协 议, 并 且 随 着 技 术 发 展, 这 将 不 仅 仅 是 一 个 简 单 的 协 议, 而 会 成 为 一 个 解 决 各 种 环 境 下 授 权 问 题 的 标 准 协 议 族 参 考 文 献 1 González JF, Rodríguez MC, Nistal ML, et al. Reverse OAuth: A solution to achieve deleated authorizations in single sign-on e-learning systems. Computers & Security, 2009,28:43-856. 2 The OAuth 2.0 Authorization Protocol (draft-ietf-oauth -v2-16),http://tools.ietf.org/html/draft-ietf-oauth-v2-16,2011.5 3 The OAuth 1.0 Protocol. http://tools.ietf.org/html/rfc5849, 2010.4. 4 张 卫 全, 胡 志 远. 浅 析 作 用 于 Web2.0 安 全 防 范 的 OpenID 和 OAuth 机 制. 通 信 管 理 与 技 术,2011,4(2):15-18. 5 许 彤, 雷 体 南.OpenID 与 OAuth 技 术 组 合 应 用 于 教 学 资 源 库 建 设. 软 件 导 刊 ( 教 育 技 术 ),2009,10:69-70. 264 专 论 综 述 Special Issue