`

oauth2.0

 
阅读更多

1Oauth2.0 三种类型的认证方式

1、 web网站认证

用户从第三方web site页面,302跳转至账号中心

输入参数:appkey、回跳地址、认证类型

https://account.aliyun.com/oauth/authorize?oauth_consumer_key=YOUR_APP_KEY&oauth_callback=YOUR_CALLBACK_URL&response_type=code

用户在账号中心登陆授权后,跳回第三方web站点

返回参数:授权临时code

https://www.aliyun.com/oauth_callback?code=CODE_GENERATE_BY_ACCOUNT


第三方web server调用账号中心api,换取accessToken

输入参数:授权临时codeappkey, appsec,回调地址,授权类型

返回参数:accessToken, refreshToken, expireTime

https://account.aliyun.com/oauth/access_token?code=CODE_GET_BEFORE&grant_type=authorization_code&oauth_consumer_key=YOUR_APP_KEY&oauth_consumer_secret=YOUR_APP_SEC&oauth_callback=YOUR_CALLBACK_URL


第三方web server使用accessToken调用账号中心api

输入参数:accessToken

返回参数:业务数据

https://account.aliyun.com/openapi/id/load?oauth_token=YOUR_ACCESS_TOKEN



2、 Javascript Client认证 (ImplicitGrant)

从第三方网站页面302跳转至账号中心授权页面

输入参数:appkey,回调地址,认证类型

https://account.aliyun.com/oauth/authorize?oauth_consumer_key=YOUR_APP_KEY&oauth_callback=YOUR_CALLBACK_URL&response_type=token


账号中心直接带上accessToken回跳第三方网站

输出参数:accessToken, expireTime

https://www.aliyun.com/oauth_callback#oauth_token=ACCESS_TOKEN&expires_in=EXPIRE_TIME


Javascript程序获取accessToken,调用账号中心API

var token = window.location.hash;

var script = document.createElement(‘script’);

script.src = ‘https://account.aliyun.com/openapi/id/load?oauth_token=’ + token;

document.body.appendChild(script);

返回jsonp格式response,例如:var data = {‘v1’:’xx’}


3、 用户名密码认证

第三方web server调用账号中心API,获取accessToken

输入参数:用户名、密码、appkeyappSec、认证类型

输出参数:accessTokenexpireTimerefreshToken

https://account.aliyun.com/oauth/acces_token_xauth?aliyunid=XX@aliyun.com&password=XXXX&oauth_consumer_key=APP_KEY&oauth_consumer_secret=APP_SEC&grant_type=password


第三方web server使用accessToken调用账号中心API

输入参数:accessToken

返回参数:业务数据

https://account.aliyun.com/openapi/id/load?oauth_token=YOUR_ACCESS_TOKEN


2各家厂商的oauth2.0实现,有所不同

新浪微博

人人网

淘宝

腾讯微博

web网站认证

支持

支持

支持

支持

js client认证

支持

支持

支持

支持

用户名密码认证

支持

支持

不支持

不支持

refresh token

不支持

支持

支持

支持

oauth api通道

https

https

https

https

open api 通道

https

http

https

https

调用API需要签名

不用

需要

不用

不用

3oauth2.0的变化

2.0继续沿用oauth核心理念,就是用户只能在资源所在站点输入用户名密码,任何第三方站点是无权获取用户密码的。

最本质的变化是从oauth1.0走http协议到oauth2.0的https协议,从而导致了认证应用和用户授权的方式改变,体现在API调用中oauth协议参数上。

附加改变是增加支持了oauth1.0中没有涉及的客户端场景:纯页面js脚本、纯客户端。

具体要点:

1、2.0只支持https通道,参数更简洁。省去了oauth_timestamp,oauth_nonce参数。这两个参数在1.0协议中,主要用于防止重放攻击,而https下不存在这个问题。

2、调用API时省去了复杂的签名算法。在2.0中,因为走https通道,accessToken, appKey, appSec在调用API时,是可以直接作为参数传递给server端的。因此无需通过复杂的签名算法保证appSec和tokenSec的保密性。

3、AccessToken Refresh机制:因为在调用OpenAPI时,accessToken是作为参数传递调用的,为了安全起见,对其做了失效处理。失效后,拿refreshToken重新获取有效的accessToken。RefreshToken是用户认证后,server对server获取的值,不会在网络上传输,具有一定的保密性和可靠性。

4、固定callback:应用注册时,会告之固定的一个callbackURL,不可变。在oauth的任意步骤中,需要回跳第三方服务器时,一定是回跳到当初注册的那个地址去的。增加了安全性。

6各个厂商API认证方式

淘宝TOP

同时支持两种认证方式

http通道:TOP认证(将由oauth2.0取代)1

https通道:oauth2.0

新浪微博

同时支持oauth1.0和2.0。

但是在弱化1.0版本(网站上已经没有1.0版本文档的明显入口了),部分新接口只支持2.0版本oauth认证,且提供接口/oauth2/get_oauth2_token将oauth1.0的token换成2.0的token

但是weibo 的oauth2.0没有refresh token的概念,accessToken失效后,用户必须重新授权。过期时间根据应用级别,从7天到90天不等。

人人

基于oauth2.0上,自己的一套认证逻辑

通过oauth2.0协议方法,获取用户的accessToken授权

在调用API时,accessToken作为参数传递,并且需要用appSec对整串参数做MD5签名

走oauth2.0认证的接口,都是https通道

而API调用通道,都是http,所以仍然需要appSec签名

腾讯QQ

同时支持oauth1.0和2.0,还有自定义的OpenID&OpenKey鉴权

oauth协议1.0和2.0都支持的比较规范

附带的,通过在用户登录授权后,会额外返回OpenID&OpenKey参数,标识用户的ID和密钥,通过OpenKey做签名算法也可以访问API

注1:TOP认证是类似于oauth1.0的认证,需要302跳转到taobao.com进行用户登陆授权,获取sessionKey,接着用appSec+sessionKey进行API参数的md5|hmac算法签名调用API。并且TOP认证加入了oauth2.0中的refresh token概念,sessionKey是有生命期的,可以通过refreshToken去延长生命期

分享到:
评论

相关推荐

    cas3.5.0集成oauth2.0协议

    **OAuth2.0协议概述** OAuth2.0是一种授权框架,允许第三方应用在用户许可的情况下,访问特定资源。它主要用于安全地实现用户数据的共享,比如社交媒体登录、云存储服务等。OAuth2.0的核心是将用户的授权过程与实际...

    完整Oauth 2.0实现实例

    OAuth 2.0 是一种广泛使用的授权框架,它允许第三方应用在用户许可的情况下访问其私有资源。在本文中,我们将深入探讨 OAuth 2.0 的核心概念,并结合 Java 实现来理解其工作原理。 OAuth 2.0 主要分为四个角色:...

    微信oauth2.0授权

    微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...

    oauth2.0服务端客户端代码jar包

    OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用在用户许可的情况下访问其存储在另一服务提供商上的私有资源。这个协议的核心是为了解决API的安全访问问题,避免用户直接将用户名和密码提供给第三方应用。...

    Oauth2.0 协议 服务端 客户端 thinkphp5.0

    OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用在用户无需透露其登录凭证的情况下,获取有限的访问权限去操作用户的资源。这个协议的主要目的是为了解决API的安全访问问题,尤其是在社交媒体、云存储和...

    基于Django2.1.2的OAuth2.0授权登录

    **基于Django 2.1.2的OAuth2.0授权登录详解** OAuth2.0是一种开放标准,用于授权第三方应用访问用户存储在另一服务提供商(如社交媒体网站)上的私有资源,而无需共享用户的登录凭证。在Django框架中实现OAuth2.0...

    OAuth2.0代码模拟实现

    OAuth2.0是一种广泛使用的授权框架,用于在第三方应用与用户资源之间建立安全的数据共享机制。这个框架允许用户授权第三方应用访问他们存储在特定服务提供商(如Google或Facebook)上的数据,而无需分享他们的登录...

    Jwt.zip_jwt_oauth2.0_oauth2.0 加解密_php解密工具

    这个工具可能还支持 OAuth 2.0 的相关功能,如生成和验证 OAuth 2.0 授权令牌。在使用这个工具之前,需要理解 JWT 和 OAuth 2.0 的基本原理,并按照库的文档或说明进行配置和调用。 总的来说,JWT 和 OAuth 2.0 是...

    OAuth2.0协议中文版

    OAuth 2.0 协议中文译本共分为九大部分,分别介绍了 OAuth 2.0 协议的背景知识、术语中英对照表、OAuth 2.0 协议的中文译本、OAuth 2.0 协议的工作流程、OAuth 2.0 协议的安全机制、OAuth 2.0 协议的优点、OAuth 2.0...

    OAuth2.0 使用到的jar包

    OAuth2.0是一种广泛应用于各种在线服务的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需用户直接共享他们的登录凭证。在Java环境中实现OAuth2.0,通常会依赖于一些特定的jar包。这些jar包包含了处理...

    webapi基于Owin中间件的oauth2.0身份认证

    **OAuth2.0简介** OAuth2.0是一种授权框架,广泛应用于Web API的身份验证和授权。它允许第三方应用在用户授权的情况下,访问该用户的特定资源,而无需获取用户的用户名和密码。OAuth2.0的核心是将认证和授权分离,...

    OAuth2.0协议原理与实现

    ### OAuth2.0协议原理与实现 #### 一、OAuth2.0协议概述 OAuth2.0协议是一种广泛应用于第三方登录及授权的标准协议。相比于OAuth1.0版本,OAuth2.0进行了多方面的优化和改进,例如简化了授权流程、取消了Token的...

    spring security oauth2.0 (讲义+代码)

    Spring Security OAuth2.0 是一个强大的安全框架,用于构建安全的Web应用和API。OAuth2.0 是一种授权框架,允许第三方应用在用户许可的情况下访问其受保护的资源,而无需共享用户凭证。本讲义结合代码将深入探讨如何...

    Java的oauth2.0 服务端与客户端的实现 (完整源码、demo)

    Java的oauth2.0 服务端与客户端的实现.zip 封装了oauth2.0的基本架构和实现,对照我的博客http://blog.csdn.net/jing12062011/article/details/78147306使用该源码。 下载项目压缩包,解压,里面两个maven项目:...

    OAuth2.0最简向导.pdf

    课程讲义所提及的视频资源和文章可以作为学习OAuth 2.0的入门材料,帮助开发者从基础开始深入理解并运用OAuth 2.0授权框架。通过这些材料,开发者可以学习如何为应用程序实现授权流程,以及如何正确使用AccessToken...

    springboot OAuth2.0-demo

    **OAuth2.0简介** OAuth2.0 是一个授权框架,允许第三方应用在用户许可的情况下,访问其存储在另一服务提供者上的特定信息。这个框架主要用于保护用户数据,避免将用户的用户名和密码直接暴露给第三方应用,提高了...

    java实现oauth2.0服务端+客户端(含JWT)

    OAuth 2.0 是一个授权框架,用于安全地允许第三方应用访问用户存储在另一服务上的资源,而无需共享用户凭证。在这个Java实现中,我们利用了MAVEN作为项目管理工具和OLTU库来构建OAuth 2.0服务端和客户端。同时,数据...

    SharePoint+OAuth2.0

    OAuth2.0 是一个授权框架,广泛应用于各种Web应用程序和服务,为第三方应用安全地访问用户数据提供了标准。在SharePoint中集成OAuth2.0,可以实现更安全、灵活的身份验证和授权机制。 OAuth2.0 的核心概念包括四个...

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

Global site tag (gtag.js) - Google Analytics