Tag: OAuth2.0

OAuth2协议和Spring Security OAuth2实现

OAuth2协议和Spring Security OAuth2实现

OAuth2协议在API访问授权中广为使用,Google、Facebook、微博、腾讯的公开API也都使用它。虽然在使用上有些复杂,尤其是服务器端的使用更为繁琐,但它在权限授予、资源访问限制上的优势让其使用广泛。 OAuth2的协议流程如下: 以国内的微博为例, Resource Owner=微博用户; Client=第三方应用,如Fuubo、Weico; Authorization Server=微博平台授权服务器; Resource Server=访问微博、用户信息等资源的服务器 当开发者决定要开发一款基于微博的应用时,需要到http://open.weibo.com去填写一些资料,比如应用名称、类型、访问哪些资源,提交相关信息之后,微博后台会创建应用,分配一个client_id和client_secret,这两个字段对你的应用至关重要,以后会派上用场。 下面就开始正式的OAuth2协议流程: A、开发者构造Authorization Request(请求微博用户授权),如果此时微博用户A没有登录会直接跳转到微博登录页面,如果已经登录会跳转到授权页面,如图所示。 此时会列出开发者在申请应用时选择要访问的权限,除了必须的权限以外微博用户A可以不勾选部分权限,这样开发者就无法读取相对应的资源。 B、 Authorization Grant(微博用户授予访问权限),如果微博用户A点击“授权”,开发者将获得这个微博用户A的微博、用户信息等资源的访问,开发者将获取到一枚临时code。点击“取消”将拒绝资源的访问。 C、Authorization Grant(请求微博平台授权)开发者拿着微博用户A授权之后获取的临时code,访问微博平台授权服务器,获取“永久”(也有时间限制)访问微博用户A的授权。 D、Get Access Token(微博平台授予微博用户A的访问)微博平台授权服务器检查微博用户A的临时code,检查通过后给开发者返回一个“永久”的Token。 E、Take in Access Token(发起携带Token的请求),开发者在访问资源的请求中带上Token。 F、Protected Resource(返回微博用户A的微博、用户信息等资源)资源服务器检查Token,根据请求URL的不同返回微博用户A的相应资源信息。 通过这几步就实现了微博用户、微博平台、第三方开发者之间的访问授权,当然如果是用户B使用开发者开发的这款应用还需要进行如上所述的步骤。 以上简单介绍了OAuth协议中最复杂的一种授权访问方式(Authorization Code Grant),也是第三方应用用的最多的一种,其他三种对于特定环境下建议使用,比如: Implicit Grant-多用于浏览器内的应用,可直接回调获取到Token,简单方便。 Resource Owner Password Credentials Grant-用于第三方应用处于可控的风险之下,多用于内部系统的互访问。 Client Credentials Grant-顾名思义,多用于客户端的授权访问,客户端必须保证在开发者手中。 OAuth2协议的可以访问地址查看。 ========================================================================= Spring在security project的基础上实现了OAuth2 的Server端,同时支持四种授权方式,参考了网上的不同示例但都没有完美支持所有方式,阅读官方文档参考源码后完整构建了OAuth2的Server端。 1、代码示例基于 spring-core v4.2.3 […]

基于GAE的新浪微博 QQ空间 豆瓣 OAuth2.0 认证(待续)

基于GAE的新浪微博 QQ空间 豆瓣 OAuth2.0 认证(待续)

附:OAuth2.0通用函数

基于GAE的OAuth2.0授权模块

基于GAE的OAuth2.0授权模块

Google App Engine 平台上OAuth2.0的Python实现。 与普通http请求授权不同,GAE平台上使用urlfetch作为http请求的封装,其他基本上相同。 新浪微博、腾讯Qzone、豆瓣网OAuth2.0 示例