`
king_tt
  • 浏览: 2224915 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Google OAUTH + OpenID 给第三方授权

 
阅读更多

From Evernote:

缩写 13. Google OAUTH + OpenID 给第三方授权

缩写 13.?Google OAUTH + OpenID 给第三方授权

OPENID操作过程:
假如自己有网站www.hanborq.com,想要google的用户也能登录,则要做如下操作:
1. 把自己的网站注册到google:https://www.google.com/accounts/ManageDomains
2. 在google上管理自己的网站:https://www.google.com/accounts/ManageDomains?, 其中Target URL path prefix:表示的是鉴权完成后将会返回的地址及token。
3. 测试:点击测试时将会跳转到这个地址继续执行:http://www.hanborq.com/authsub?token=1%2FK_dvV72aicVeZ6FUSK0s6TLbfayj0t4srgoOyG4BeWA?

OAUTH2操作过程:
文档:http://code.google.com/intl/zh-CN/apis/accounts/docs/OAuth2.html (含web javascript访问方式、web服务器访问方式,应用程序访问方式,下面置说明了web方式过程):
1. 注册到google:https://code.google.com/apis/console, 选择API Access,需要。
Client ID: Client secret: Redirect URIs: JavaScript origins:
133501856298.apps.googleusercontent.com
X-rMJocMGJ3DDNbMgS-iFO9X
http://www.hanborq.com/oauth2callback
http://www.hanborq.com
2. 授权访问方法(注:client_id和redirect_uri跟上面注册的对应,scope对应某种API,需要看文档):
3. 登录同意之后返回结果:
注意到返回了access_token和超时值。
4. 最后使用这个返回的token:
这里前缀为第一次请求里面的scope,后面带了oauth_token为上面的access_token。

如果要得到用户名、邮箱地址,则使用下面链接,返回的XML包含<id>为邮箱,<title>里面含有 用户名:


scope列表:
Google API Service name
Google Analytics Data API https://www.google.com/analytics/feeds/
Google Base Data API http://www.google.com/base/feeds/
Google Sites Data API http(s)://sites.google.com/feeds/
Blogger Data API http://www.blogger.com/feeds/
Book Search Data API http://www.google.com/books/feeds/
Calendar Data API http(s)://www.google.com/calendar/feeds/
Contacts Data API http(s)://www.google.com/m8/feeds/
Documents List Data API http(s)://docs.google.com/feeds/
Finance Data API http://finance.google.com/finance/feeds/
Gmail Atom feed https://mail.google.com/mail/feed/atom/
Health Data API https://www.google.com/health/feeds/
https://www.google.com/h9/feeds/(H9 sandbox)
Maps Data API http://maps.google.com/maps/feeds/
Picasa Web Albums Data API http://picasaweb.google.com/data/
Sidewiki Data API http://www.google.com/sidewiki/feeds/
Spreadsheets Data API http(s)://spreadsheets.google.com/feeds/
Webmaster Tools API http://www.google.com/webmasters/tools/feeds/
YouTube Data API http://gdata.youtube.com
得到gtalk用户名、头像 ? ? ? ? ?www-opensocial.googleusercontent.com/api/people/@me (http头里面必须包含Authorization: OAuth <token>,oauth_token就不用了


Google OAUTH + OpenID 给第三方授权

可以通过Google OAuth服务为Google 用户的资源进行授权,如用户通过第三方软件调用Google Open API操作用户的资源时,就需要用户对第三方软件授权;通过Google OpenID服务可以打通Google与其他支持OpenID服务网站之间的用户体系。现在假如有另外一个网站,也想开放自己的Open API服务,但是又不想实现OAuth服务(毕竟实现OAUTH服务还是需要一些成本的),那该怎么办?它可不可以使用Google 提供的OAuth服 务,授权认证交给Google来处理?可以!但是OAuth授权也是基于用户登录来实现的,Google OAuth用户体系只是Google的用户体系,那又怎么办了?OpenID!对,将网站的用户体系与Google用户体系打通,并且使用Google OAuth服务来实现授权,即Google提出的OpenID + OAUTH的解决方案。

一、 OAUTH 与 OpenID

前面两篇文章对 OAuth 与?OpenID 均做过介绍,且Google均提供了这两种服务,在此我们先简要的回顾这两种服务,具体介绍请参见相关文章。

OAUTH是一种开放的,基于用户登录的授权认证方式。如当用户使用第三方软件调用Google Open API去操作自己的Google服务资源时,用户就要先对该软件授权。授权过程中,第三方软件会引导用户登录Google,进行用户鉴权,用户通过 Google身份鉴权后才能对第三方软件授权。显然,Google OAUTH只能对Google用户进行鉴权,其他用户体系的用户不能直接鉴权。

OpenID是一种开放的,去用户中心的,用于打通各网站之间的用户体系的服务。在支持OpenID的网站间,你可以使用任何一个 网站的帐号或者 Open ID去登录任何一个网站。OpenID提供了类似单点登录的用户体验,并且用户无需在各个网站上注册就可以使用该网站的资源,将用户从繁重的帐号注册与管 理工作中解脱出来。当用户使用OpenID登录没注册的网站过程中,网站会引导用户登录OP(用户OpenID注册的网站),请求 OP对用户身份鉴权,用 户通过OP鉴权,网站才会容许用户登录。

若将OpenID与Google OAUTH结合,OpenID将第三方网站的用户体系与Google用户体系打通后,第三方网站便可使用Google OAUTH服务,对自己的用户进行授权!交互示意图如下图所示:


二、 Google OAUTH + OpenID解决方案

Google提出了OpenID + OAUTH的解决方案,将两者揉合在一起,具体流程如下图所示:


1. Web应用请求用户登录;

2. 用户选择使用Google OpenID进行登录;

3. Web应用请求发现Google认证服务URL;

4. Google向Web应用返回XRDS信息,其中包含Google认证服务URL;

5. Web应用请求用户登录Google服务,通过请求用户授权;

6. Google引导用户登录;

7. 用户输入用户名密码进行登录,同时确认是否对第三方软件授权;

8. Google认证中心返回用户ID与授权的Request Token给Web应用;

9. 用户可以访问受保护的资源,同时可以继续第七部中Oauth认证余下的环节;

从上面的流程第五步可以看出,Google解决方案中,将OAUTH与OpenID的登录操作合并在一起、并且在登录的同时向 Google发送 Oauth请求,请求用户授权。这样一来,在第五步中,用户登录Google(OpenID中Google对用户鉴权),同时请求对用户授权(OAUTH 中对用户授权,同时无需再次登陆,因为前面OpenID已经登录过了)。

三、Google OAUTH+OpenID Demo

Google提供了OAUTH + OpenID的DEMO,Demo演示地址如下:http://googlecodesamples.com/hybrid/

刚开始,用户既没OpenID登录也没OAUTH授权,如下图所示:


接着,点击上图中login按钮请求以Google提供的OpenID登录,如下图所示:


输入用户名与密码登录后,Google提醒您即将登陆到外部网站,外部网站申请对您的资源进行授权,您是否同意,如下图所示:


点击继续登录后,登录成功,并且返回授权的Token,如下图所示:

分享到:
评论

相关推荐

    oauth2+openidconnect 授权身份认证

    OAuth2的核心概念包括四个主要角色:资源所有者(用户)、资源服务器(拥有用户数据的服务器)、客户端(第三方应用)和授权服务器。授权过程通常涉及以下几个步骤: 1. 用户登录授权服务器。 2. 用户同意给予...

    针对近期“博全球眼球OAuth漏洞”的分析与防范建议

    - **授权码获取**:一旦用户同意授权,授权服务器将返回一个授权码给第三方应用。 - **令牌交换**:第三方应用使用授权码向授权服务器请求访问令牌。 - **访问资源**:第三方应用使用访问令牌访问资源服务器上的资源...

    OpenID & OAuth

    OAuth的工作流程包括用户在服务提供商(如Twitter)上授权第三方应用,服务提供商生成一个访问令牌,然后第三方应用使用该令牌进行受限的资源访问,而不是直接使用用户的凭据。 在实际应用中,OpenID和OAuth有时会...

    graphql-oauth:OAuth + GraphQL + Passportjs

    OAuth主要分为两个版本:OAuth 1.0和OAuth 2.0,其中OAuth 2.0更为广泛使用,它提供了一种灵活的方式,让用户授权第三方应用访问他们的数据,如社交媒体账户、邮件服务等。 GraphQL是一种由Facebook开发的API查询...

    基于python的统一身份认证授权管理解决方案,支持多种标准协议(LDAP, OAuth2, SAML, OpenID)

    2. OAuth2:这是一个授权框架,允许第三方应用在用户的许可下访问其存储在另一服务提供商上的资源,而无需获取用户的账户凭证。例如,当你使用“用Google账户登录”时,就是OAuth2在起作用。 3. SAML:这是一种XML...

    OAuth_and_OpenID_Connect_in_plain_English_v1.6__KCDC_

    传统的解决方案如用户名和密码直接传递给第三方,或者使用单一登录(SAML)在不同网站间共享状态,但在移动应用和第三方服务集成的场景下显得力不从心。OAuth 2.0 提供了一种委托授权的机制,用户可以通过授权服务器...

    集成JustAuth实现第三方授权登录.zip

    JustAuth是一款由Java编写的、易于使用的第三方登录授权库,支持众多流行的OAuth2.0和OpenID Connect服务提供商,如GitHub、Google、微信、QQ等。通过JustAuth,开发者可以轻松地将第三方登录功能整合进自己的应用中...

    第三方登录

    第三方登录基于OAuth协议,该协议允许用户授权第三方应用访问他们存储在特定服务提供商上的信息,而无需将用户名和密码透露给第三方。OAuth提供了一种安全的身份验证机制,让用户能够在不泄露敏感信息的情况下,使用...

    第三方登录所需要的一系列jar包

    在实现第三方登录的过程中,通常会用到一系列的Java库或jar包,这些库提供了必要的接口和工具来处理OAuth、OpenID等认证协议。本篇将详细介绍在"第三方登录所需要的一系列jar包"中涉及到的关键技术及其作用。 首先...

    OAuth gem for rails3

    OAuth gem for Rails3 是一个针对Ruby on Rails框架的授权库,它实现了OAuth协议,以便于在Rails应用中安全地处理第三方服务的授权流程。OAuth是一个开放标准,允许用户让第三方应用在无需分享用户名和密码的情况下...

    Python-Authlib是一个实现OAuth1OAuth2身份验证的客户端和服务端

    它主要关注的是授权而不是认证,允许用户授权第三方应用访问他们存储在特定服务上的数据,而无需共享他们的登录凭据。OAuth 2的角色包括资源所有者、客户端、授权服务器和令牌服务器。 `Authlib` 库提供了一个简洁...

    第三方单点登录Ecology方案

    - **第三方SSO**:由外部服务提供商提供SSO服务,例如Google、Facebook等,用户可以通过这些平台的身份验证来登录其他应用。 2. **方案背景**: 随着互联网服务的多样化,用户需要记忆众多账号和密码,这既不便捷...

    practice oauth2.0_English version

    在OAuth流程中,用户首先通过认证提供者(如Google或Facebook)验证自己的身份,然后授权第三方应用获取访问令牌,以访问受保护的资源。 2. **授权(Authorization)**:OAuth 2.0的核心在于授权。它允许用户授予第...

    单点登录 oauth21

    例如,OAuth2.0更适合处理第三方应用授权,而OpenID Connect则是在OAuth2.0基础上增加了一个身份验证层,更适合用户身份验证。 在实际项目中,选择合适的技术实现SSO和OAuth2.0,需要根据应用场景、安全需求、资源...

    Android第三方登录

    在Android中,通常会使用Intent启动第三方登录的Activity,用户同意授权后,第三方应用会回调到我们指定的Activity。这时,我们需要捕获回调数据,解析其中的授权码,并通过HTTP请求向第三方服务器换取正式的access_...

    Thinkphp第三方登录演示与下载

    首先,第三方登录(OAuth)是一种授权协议,允许用户授权第三方应用访问他们在特定服务提供商(如Facebook或Google)上的信息,而无需共享他们的用户名和密码。在ThinkPHP中,我们可以利用OAuth库或第三方SDK来实现...

    SecureMicroservice:使用OAuth,OpenID Connect和Ocelot API网关使用IdentityServer4保护.NET 5微服务

    OAuth 2.0主要处理授权,而不是身份验证,它允许用户授权第三方应用访问其存储在另一个服务上的私有数据,如Google或Facebook的数据。 2. OpenID Connect:OpenID Connect是基于OAuth 2.0协议的认证层,提供了一个...

    前端开源库-passport-google-oauth1.zip

    2. **OAuth1.0a**:OAuth1.0a是OAuth协议的一个版本,主要用于授权第三方应用访问特定API。它涉及到四个主要角色:资源所有者(用户)、消费者(应用)、服务提供者(如Google)以及令牌服务器。OAuth1.0a改进了签名...

    gae-oauth2-oidc:Google App Engine,OAuth2,OpenID Connect解决方案

    OAuth2是一种授权框架,允许第三方应用在用户授权的情况下访问其私有资源,而OpenID Connect则是在OAuth2的基础上增加了一个身份验证层,可以用于验证用户的身份。 首先,我们来详细了解一下OAuth2。OAuth2是一种...

Global site tag (gtag.js) - Google Analytics