`

Google OAUTH + OpenID解决方案

 
阅读更多

【转】Google OAUTH + OpenID解决方案

同系列文章,转载自 Google OAUTH + OpenID解决方案 , 蓝色字是我加的注解或是着重提示。

 

       在前面已经介绍过OAuth与OpenID,这两种服务,Google都实现了。我们可以通过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,如下图所示:

 

参见:

http://ig2net.info/archives/765.html

http://ig2net.info/archives/496.html

分享到:
评论

相关推荐

    graphql-oauth:OAuth + GraphQL + Passportjs

    总的来说,OAuth、GraphQL和Passportjs的组合提供了一个强大且灵活的身份验证和数据查询解决方案,尤其适用于现代Web应用和API设计。理解并掌握这些技术对于构建安全、高效的后端系统至关重要。

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

    基于Python的统一身份认证授权管理系统提供了一种高效、安全的解决方案,它能够支持多种业界标准协议,如LDAP(轻量目录访问协议)、OAuth2、SAML(Security Assertion Markup Language)以及OpenID。这些协议在不同...

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

    【gae-oauth2-oidc: Google App Engine,OAuth2,OpenID Connect解决方案】 这个项目是针对Google App Engine(GAE)平台的一个实现,旨在提供OAuth2和OpenID Connect(OIDC)的身份验证服务。OAuth2是一种授权框架...

    OpenID & OAuth

    比如Google的OpenID和OAuth Hybrid方案,用户可以通过OpenID进行身份验证,然后使用OAuth授权特定应用访问Google的API和服务。 OpenID和OAuth的普及得益于许多大型企业和机构的支持,如Google、Facebook、Yahoo!、...

    OAuth_and_OpenID_Connect_in_plain_English_v1.6__KCDC_

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

    vouch-proxy:使用auth_request模块的Nginx的SSO和OAuth OIDC登录解决方案

    谷歌 GitHub企业版钥匙斗篷其他大多数OpenID Connect(OIDC)提供商当您将您的IdP或库部署到Vouch Proxy后,请务必告知我们,以便我们更新列表。 如果Vouch与Nginx反向代理在同一主机上运行,​​则从/validate端点...

    play-silhouette:Silhouette是用于Play Framework应用程序的身份验证库,它支持几种身份验证方法,包括OAuth1,OAuth2,OpenID,CAS,2FA,TOTP,凭据,基本身份验证或自定义身份验证方案

    Play-Silhouette是一款专为Play Framework设计的身份验证库,它提供了一套全面的身份验证解决方案,适用于多种不同的认证协议和技术。这款库的强大之处在于它支持多种身份验证方法,包括OAuth1、OAuth2、OpenID、CAS...

    Laravel开发-laravel-oauth

    - **laravel-auth0**: 提供了完整的身份验证和授权解决方案,支持 OAuth2 和 OpenID Connect。 - **Abraham\TwitterOAuth**: 专注于 Twitter 的 OAuth1 实现,提供了签名生成、请求令牌获取、访问令牌获取等方法。 ...

    demo-oauth2-login:使用Spring Boot 2进行演示OAuth2OIDC登录Spring Security 5

    Spring Security 是一个强大的 Java 安全框架,它提供了一整套安全解决方案,包括认证、授权等。Spring Security 5 提供了对 OAuth2 和 OIDC 的支持,使得开发者可以轻松地在 Spring Boot 应用中实现社交登录功能,...

    Swift-AppAuth是用于iOS和MacOS的OAuth和OpenIDConnect客户端

    总的来说,Swift-AppAuth是实现OAuth 2.0和OpenID Connect身份验证的关键工具,它提供了一套安全、高效的解决方案,帮助开发者构建可靠的身份验证系统。通过深入理解和使用这个库,你可以为你的iOS和macOS应用添加...

    基于.Net的单点登录(SSO)解决方案

    下面将详细介绍基于.Net的SSO解决方案。 首先,理解SSO的核心概念:共享身份验证状态。这通常通过在所有参与系统之间共享一个中央身份验证服务来实现。在.Net中,这个中央身份验证服务可能是ASP.NET Identity或...

    开源UIfirst身份与访问管理IAM SingleSignOn单点登录平台,web UI支持OAuth 20 OID.zip

    UIfirst的这个开源SSO平台结合了OAuth 2.0和OIDC,提供了全面的身份验证和授权解决方案。通过OAuth 2.0,它可以为各种Web应用提供安全的API访问,而通过OIDC,它可以确保用户身份的准确性和安全性。用户界面(UI)...

    SharePoint 开发实录:3,SSO不同解决方案

    7. **OAuth and OpenID Connect**: 这些是现代身份验证标准,允许应用程序以安全的方式获取授权,而无需直接处理用户凭据。SharePoint Online和Office 365支持这些协议,使得第三方应用和服务可以安全地与SharePoint...

    基于thinkphp5和Oauth20的QQ互联登陆

    总之,"基于thinkphp5和Oauth2.0的QQ互联登陆"项目为开发者提供了一种高效且安全的用户认证解决方案,利用QQ的广泛用户基础,提升了应用的用户体验和注册转化率。对于PHP开发者而言,掌握这种技术有助于提升应用的...

    集群中几种session同步解决方案的比较共1页.pdf

    如Google的OpenID Connect或OAuth 2.0等协议,允许用户在多个服务间共享身份验证信息,无需在每个服务上独立管理session。这种方法适用于大型分布式系统,但实现起来较为复杂。 在选择session同步解决方案时,应...

    IdentityServer4 Demo

    总结,`IdentityServer4`是一个强大的工具,可以帮助开发人员构建安全的、符合标准的认证和授权解决方案。`IdentityServer4DemoWjx`则是一个实践示例,演示了如何设置和使用`IdentityServer4`,对于学习和理解OAuth2...

    第三方单点登录Ecology方案

    在IT行业中,第三方单点登录(Third-party Single Sign-On,3SSO)是一种常见的身份验证解决方案,它允许用户通过一个中央认证系统访问多个相互独立的应用系统,而无需反复登录。"第三方单点登录Ecology方案"是针对...

    通用权限管理模板

    总的来说,这个“通用权限管理模板”提供了完整的权限管理和第三方登录解决方案,对于快速构建安全的企业应用非常有帮助。开发者可以根据自身需求调整和扩展这个模板,以适应各种复杂的权限控制场景。

    jap-master.zip

    总的来说,JAP作为一款全面的认证中间件,为WEB应用提供了安全、灵活的身份验证解决方案。其模块化设计和对多种认证协议的支持,使得开发者能够快速、高效地实现登录认证功能,提升系统的安全性与用户体验。对于希望...

Global site tag (gtag.js) - Google Analytics