Google+ Sign-In:联合身份认证、授权和语义活动流

  • Saul Caganoff
  • 李彬

2013 年 4 月 11 日

话题:Google架构

Google+ Sign-In将 Google+ 社交网络扩展到第三方网站、桌面应用和移动应用,并进一步巩固了 Google 与 Twitter 和 Facebook 一道作为认证提供者的地位。在 2 月 26 日公布的这项服务支持以下特性:身份认证、授权和活动分享。它还为用户互动、Hangouts(通过摄像头进行多人视频通话)和自动下载 Android 应用提供了额外的支持

尽管关于这项新服务的讨论主要聚焦在与 Facebook 的激烈竞争上,从技术角度看,探寻Google+ API幕后的内容以了解这些新特性如何工作并理解一些将要投入使用的标准很有帮助。

一个简单的 [g+ | Sign In] 按钮为进入第三方 Web 页面、桌面或移动应用提供了入口。它的流程从应用为了访问用户的 Google+ 档案而请求访问令牌开始。在浏览器中,该编配(orchestration)通过客户侧流程,或是通过后端 API 操作使用服务器侧流程完成。如果用户还未使用 Google+ 认证,则认证会作为 sign-in 的一部分。此外用户会得到提示,对第三方应用赋予他们希望的访问等级。访问等级或范围包括:

  • Userinfo.email:仅提供用户的电邮地址
  • plus.me:提供用户的 Google+ 档案信息
  • plus.login:通过允许访问圈子以及向用户的 Goolge+ 活动流写入活动的能力,扩展其他范围

这样的访问编配结合了认证与授权,授权遵循OpenID Connect草案标准,而这份草案标准则基于近期生效的OAuth 2协议。认证则完全由 Google 认证系统处理而不会涉及第三方应用。OpenID Connect 将认证置于 OAuth 授权协议之上,有效地对第三方应用进行用户认证并准许访问用户的 Google+ 档案。Nat Sakimura是 OpenID 基金会主席及 OpenID Connect 的合著者,他恰到好处地描述了 OpenID、OAuth 和 OpenID Connect 之间的区别,以及应用如何使用类似 Google+ Sign-In 这样的服务以校验一个用户请求访问的认证。

用户可以使用他们的应用设置页面检查他们的应用授权,在该页面中他们可以取消访问或改变自己的分享设置。

第三方应用现在可以使用其访问令牌在 Google+ API 中管理应用内活动。Google 将这些活动称作“瞬间(moments)”,而 Google+ API 提供简单的 CRUD 接口以插入、列出和删除“瞬间”。“瞬间”可以以不同的风格出现,被称作 ActivityTypes(活动类型)。所有的活动都拥有名字、描述和缩略图,以及一个用于表现活动主题的itemtype(事物类型)。Itemtype 必须是schema.org所列出的事物的子类型,例如一本、一个地方或是一个。此外,事物必须拥有指向某个 HTML 页面的 URL——这个页面必须包schema.org含标记出的相关事物。用这种方法,Google+ 集成鼓励开发结构化标记的“语义网”,它也有益于搜索引擎。行为列表相当全面:

  • AddActivity(添加活动):一个具有 itemtype、名字、描述和缩略图的通用活动。
  • BuyActivity(购买活动):展现某事物的购买。
  • CheckinActivity(签到活动):展现用户在某处签到,并带有额外的地址和地理位置属性。
  • CommentActivity(评论活动):适用于用户对一篇博文、书或其他创新作品进行评价的时候。
  • CreateActivity(创建活动):适用于用户创建一件创新作品的时候。
  • DiscoverActivity(发现活动):适用于用户发现一件创新作品的时候。
  • ListenActivity(聆听活动):展现用户正在聆听音乐拷贝或提供额外属性用于歌曲、专辑和艺术家的元数据。
  • ReserveActivity(预订活动):表示用户正在预订某项本地业务,例如餐厅或酒店。
  • ReviewActivity(评价活动):一项包含评级信息的事物评价。
  • WantActivity(期望活动):表明用户期望某事物,例如他们将某事物添加到了应用中的心愿单。

Google+ 基于用户授权设置,完全处理将这些“瞬间”到 Google+ 活动流的表达与分发工作。

这份简洁的回顾仅仅浮光掠影般检视了 Sign-In 带来的新的 Google+ 特性,但却给出了一个关于新的认证和授权标准,以及语义标记向社交活动流扩展的有趣例子。

查看英文原文Google+ Sign-In: Federated Identity, Authorization and Semantic Activity Streams


感谢侯伯薇对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

Google架构