Google
API
授权体系
访问
Google API
或者
Google
里面的数据时,第三方应用程序通常需要从首先从
Google
拿到授权。比如说,用户使用了一个第三方应用程序,而此应用程序需要拿用户的日历信息,代表用户拿到
calendar
的信息,首先必须从
Google
得到授权,不能说谁都可以拿用户的敏感信息吧。因此
Google API
的授权体系正是为了保证用户的数据,保护应用程序本身而设计的一整套安全的系统。了解
Google
的授权体系同样有利于我们构建自己的用户认证和授权系统,目前部门的一些系统已经采用了
Google
类似的授权方案。显然,学习好的架构是百利而无一害的。
1.
Old
授权体系
1.1The AuthSub authorization process
1.
当应用程序需要访问用户的Google
服务时,如日历,Google Doc
等服务时,可以向Google
授权代理服务发起一个AuthSub
的调用。
2.
授权服务回应一个访问请求Page
,这个Google
托管的page
要求用户grant\deny
访问他们的google service
的请求。
3.
用户决定是否同意该第三方程序访问他们。如果用户拒绝访问,该page
会跳转到Google
页面而不是返回给应用程序。
4.
如果用户同意授权,则授权服务将page
重定向给应用程序,这个重定向URL
包含一个授权的token
,这个token
只能使用一次,而且这个token
可以交换成生命周期更长的token
。
5.
应用程序用一个请求访问google
服务,并使用授权token
来代表充当用户的角色。
6.
如果
google
认识该
token
,则给应用程序提供请求的数据。
1.2 Token和token的管理
每个授权token只是针对一个用户帐号而言的,但是对于该帐号的多个服务可以使用同一个token。Tokens可以限制在某个范围之内。例如,个人的服务可以限制访问某个特定类型的数据或者活动(如限制对该数据只提供只读的权限)
你可以选择使用一次性的tokens或者session tokens,依赖于你的应用程序使用token的用途。一次性使用的token允许应用程序发送单个的对Google service的调用。而session token允许让应用程序无限次调用Google service。Session tokens不会过期。当使用session tokens,你的应用程序应该存储每个用户对应的session token,而不是每次都请求新的token。如果想看token管理的其它选项,请看“Working with AuthStub”
经过注册的web应用程序可以在他们的AuthStub中指定一个安全的token,当使用secure token调用Google service的时候,应用程序必须对request进行数字化签名,包含token和在request header里面的签名。该请求可能包含一个时间戳以提高安全性以防止重放攻击。如果想了解更多的关于使用secure token的信息,可以参考 “Signing request”。除了这些变化,AuthStub使用secure和非secure tokens的请求流程是相同的。
Note:一些Google services只允许那些已经注册过和使用安全tokens的web应用程序访问
1.3注册
如果你正在使用AuthSub,你可以选择注册你的应用程序,并且通过创建安全证书为你的用户提供更好的安全性。尽管大多数Google services允许未注册的应用程序访问,而有些需要更多的安全访问。如果需要更多关于注册流程的信息,请参考Registration for Web Applications
1.4 Working with AuthSub
整合AuthSub,你需要做以下工作:
1.首先决定你的应用程序是否需要注册
经过注册的应用程序有个优势是让Google认识你。在Google 登录页面显示给用户标准的警告将被滤除或者修改,另外经过注册的程序是通过描述名来识别,而不是仅仅是通过调用的URL。记住有些Google service强制要求应用程序必须经过注册,如果你选择注册,请使用自动化的注册流程。
如果你注册,你也可以提供一个安全证书和key。有证书的经过注册的web 程序能够获取安全token。
2.决定使用什么类型的tokens和怎么去管理他们
从Google拿到授权的token是用于以后和特定的Google service进行交互的。选择一次性的token还是session token取决于你的应用程序的与google service交互的类型,例如单次使用的token适合于只需要交互一次或者很少需要尽兴交互的情况。
如果你选择使用session tokens,并且使用他们进行常规的对Google服务的访问,你的额应用程序将需要管理token的存储,包括跟踪为user和google service的token正确性,Google 帐号并不是为了管理大量的tokens,并且实际上不允许多余10个以上正确的tokens(对于每个应用程序,每个用户),如果有必须这种限制允许程序使用多个tokens去覆盖不同的服务。如果你决定存储session tokens,这些tokens应该象对待其他敏感信息一样要进行安全保护。
3.决定Google service的访问的scope
service他们自己决定允许什么类型的访问并且允许访问多少内容。这种访问是通过一个scope的值来表达的。一个服务的scope可以是一个简单的URL来代表整个service,或者可以指定更加严格的访问。一些服务对访问提出了非常高的限制,例如对某些限制性的内容只提供只读的访问。要获取你想要访问的Google service的scope,请参考相应service的文档。你必须尽量指定更严格的scope,例如,如果你想要访问Gmail的Atom feed feature,应尽量使用"http://www.google.com/calendar/feeds/"的scope而不是"http://www.google.com/calendar/",Google service对large scope的请求更加严格。
4.准备一种机制去发送和接收授权token
这种机制必须产生一个正确的AuthSub request的调用,包括指定合适的scope的URL值和next url。如果你正在使用安全的token或者你正在使用session tokens,这个请求必须也包含这些变量的值。
Next的URL可以包含查询参数。例如,当支持多语言版本时,可以包含一个web应用程序语言版本的查询参数,那么next的URL:http://www.yoursite.com/Retrievetoken?Lang=de 的请求,会产生一个
http://www.yoursite.com/Retrievetoken?Lang=de&token=DQAADKEDE的redirect。解析token和语言参数可以保证重定向到指定语言的site。
这种token机制必须解析从Google redirect回来的token参数,这个token是单个使用的token,因为授权tokens是针对一个用户而言的,应用程序必须能将这个token跟这个用户关联起来。你可以使用cookie来关联user和token,当google将带有token的url将user重定向回到你的site时,你的程序可以读取cookie并关联到正确的user。
5.准备一种机制去请求session token,别且存储或者销毁他们
取决于你选择哪一种token管理,你可能需要创建一种机制去获取和销毁session tokens(AuthSubSessionToken and AuthSubRevokeToken)。 测试session和销毁机制,使用AuthSubTokenInfo,这个对象可以表明一个token是否正确。如果存储token,应用程序必须跟踪user ID和token覆盖service的范围。
6.准备一种机制去请求对Google service的访问
请参考具体访问的google service所要求的格式。所有对Google service的请求必须包含一个正确的授权。一般来说,对Google service的请求是HTTP GET请求,token放在请求的头里:
请求头必须是下面的形式;
Authorization: AuthSub token="token"
这里的token是授权的token,单个使用的还是session token。如果token是安全的,还必须包含一个数字签名,请参考"Signing requests"了解更多的具体情况。
下面的例子是阐述一个请求头里面发送的Google calendar feed service的格式,这个请求头里的token不是一个安全的token:
GET /calendar/feeds/default/private/full HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="GD32CMCL25aZ-v____8B"
User-Agent: Java/1.5.0_06
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
参考资料:
1.http://code.google.com/intl/en/apis/accounts/docs/GettingStarted.html#OAuth2
2.http://code.google.com/intl/zh-TW/apis/accounts/docs/AuthSub.html
- 大小: 21.2 KB
分享到:
相关推荐
本文将从云服务面临的安全威胁、安全架构的演进、Google生产环境安全、Google容器纵深防御体系、分布式系统安全、密钥体系、Google租户安全体系架构以及可信架构等方面进行详细分析。 云服务面临的安全威胁主要可以...
公司不仅是国内首家获得谷歌授权的智能投影品牌,而且还在消费体验和产品创新方面持续发力。报告指出,智能投影市场作为新的增长点,主要应用场景包括家用和商用两大类,其中家用市场随着消费者对于家庭娱乐体验的...
8. **云计算与Serverless**:AWS Lambda、Google Cloud Functions或Azure Functions等Serverless平台允许开发者编写无服务器函数,按需执行,降低运维成本。 9. **CDN加速**:内容分发网络(CDN)通过缓存静态资源...
分析知名软件或系统的架构,例如Google的Bigtable分布式数据库、Amazon的弹性计算云(EC2)等。 通过以上对软件体系结构的详细解释,我们可以看出它在软件开发中的核心地位。理解和掌握这些知识点对于成为一名优秀...
"google专利申请书大全"这一压缩包文件包含了Google公司28项不同的专利申请,这不仅是对Google技术发展的一个深入洞察,也是学习和研究专利体系的宝贵资源。 1. **专利申请流程**:专利申请通常包括发明概念的形成...
- **谷歌为何选择零信任**:2009年的APT攻击“极光行动”促使谷歌开始构建零信任网络。 - **零信任网络的应用**:通过设备和用户的身份验证、无特权网络部署、基于资产的访问控制等措施来增强安全性。 #### 五、零...
可信执行环境技术是指运行在隔离硬件之上的隔离安全操作系统以及提供授权安全软件的安全执行环境。该技术实现了不同程序的隔离运行,从而保障了用户关键代码和数据的机密性、完整性不受恶意软件破坏。 隐私计算技术...
《Google云原生安全架构白皮书》是Google Cloud提供的一份深度解析云原生安全架构的...无论是从基础设施、操作流程,还是到用户端的工具支持,Google都致力于构建一个全方位的云安全体系,以保护用户数据的隐私和安全。
Google Data APIs,即Google数据APIs,是Google API体系中的重要组成部分,它提供了一种标准化的方法来读取和编写Web上的数据。这一章节深入探讨了数据APIs的基本原理、应用场景以及其如何利用Atom和RSS这两种XML...
ARM专注于设计ARM系列RISC(Reduced Instruction Set Computing,精简指令集计算)处理器内核,并通过授权模式将其内核技术许可给半导体行业的合作伙伴进行生产和销售。值得注意的是,ARM本身并不直接参与芯片的制造...
例如,谷歌的20%时间政策鼓励员工自主探索创新,体现了授权与自主管理的理念。同时,网络环境下的协同工作和项目管理也催生了敏捷管理方法,如Scrum和Kanban,强调灵活适应变化和持续改进。 管理决策是管理活动的...
总而言之,数据挖掘技术是Google安全体系不可或缺的一环,它有助于实时地监控、分析、识别和响应安全威胁,从而保护用户数据不受侵害,并确保Google服务的安全性和可靠性。当然,安全是一个持续的过程,而技术如数据...
数据运营体系搭建指南 随着精细化理念的不断深入人心,“数据运营”这个概念得到了大家越来越多的重视。但是什么是正确的数据指标,如何正确地采集数据,如何用数据驱动业务增长?这些常见的数据迷思,困扰着大多数...
总结来说,Google的安全架构是一个深度集成、全面覆盖的体系,涵盖了从设计到实施、监控、更新和恢复的每一个环节。这一架构不仅保护了用户的隐私和数据安全,也为其他企业和组织提供了宝贵的参考和学习对象。理解并...
【网络安全渗透测试】在当前数字化时代,网络安全是任何组织都需要关注的重要议题。渗透测试是一种主动的安全措施,...同时,配合使用Google提供的工具和服务,可以构建强大的安全防护体系,为业务的稳定运行提供保障。
10. **云原生技术**:如AWS、Azure、Google Cloud等云平台的使用,以及Serverless、FaaS等新型架构。 总之,大型网站架构的演变是技术进步和业务需求共同推动的结果,涉及的知识面广泛,需要不断学习和实践才能跟上...
同时,熟悉AWS、Azure、Google Cloud等云服务,以实现云原生开发。 12. **性能优化**:监控系统性能,学习如何通过日志分析、性能测试工具(如Apache JMeter)找出瓶颈,优化代码和数据库性能。 13. **设计模式**...
在Java环境中,实现零信任可能涉及身份验证、授权、加密以及微服务架构,以确保每个访问请求都经过严格的验证和授权,防止未授权的访问和潜在的安全威胁。 “日志预处理系统”是指在数据分析之前对日志数据进行清洗...
1. **身份验证**:库支持OAuth 2.0授权,允许开发者安全地获取用户访问Google Analytics数据的权限。 2. **数据报告**:获取实时、历史和自定义报告,包括但不限于访问者数量、页面浏览量、会话时长、来源/媒介、...
这种模式通常基于函数即服务(FaaS)平台,如AWS Lambda、Google Cloud Functions或Azure Functions。 **三、为什么选择无服务器** 无服务器架构的主要优点包括: 1. **自动扩展**:根据需求自动调整资源,无需...