oauth腾讯微博获取的oAuth有什么方式保存?

oauth  时间:2021-09-03  阅读:()

如何使用 Oauth 实现一个安全的 REST API 服务

场景 想要为开发工程师们开发一个既能满足REST约束条件和原则又不像OAuth OAuth 那样复杂 plexity ,仅仅使用简单的传值语句或者其它简单但同样安全的方法就能实现的web API? 聪明人会有聪明的想法… 问题 直接通过HTTP literally passing the credentials over HTTP以文本方式传输鉴权信息可能会被破译; 尤其在 Gawker incident, 再以文本或是弱加密的方式传输鉴权信息是非常不安全的做法 weakly-hashed anything is usually a bad idea. 即便是使用哈希加密后还是很有可能被人根据彩虹表 Rainbow Table破译出与用户名匹配的密码(个别案例) 这可该怎么办,真是郁闷… 也许你又会想到很多公共的API popular public APIs 在请求中采用双数据的模式:一个公有值一个(最好是有)只有属主能访问的私有值。

”还是有点不对!”这不跟原来(用户名密码模式)文本模式差不多么,还是可能会被(嗅探器)破译。

这时候你可能准备放弃并采用OAuth模式了,但仍坚信必有某种简单方法能实现公用webAPI安全访问私有鉴权信息。

解决方案 连续2天的Peyote实验后(你可能会找到更好的放松办法),结论终于呈现在你眼前:Amazon是拥有最大的、使用最多的在线网络API的网络服务之一,并且根本不支持OAuth! 经过一个下午长时间的狂想之后,你最终败下阵来,并看到Amazon是如何保持API请求安全的。

你不清楚为什么,但读完整页关于如何为Amazon网络服务装配一个请求后,你依然觉得不完全合理。

这个“签名”和什么连在一起?代码示例中的“data”参数是什么?这样,你会继续查找关于“安全API设计”的文章。





当遇到其他人问同样的问题时,你看到一些指出"HMAC"或其他事物的优秀回复,但还是不太确定。

你找到其他鼓励你使用“HMAC”的文章并且你正H-FINE地使用它,如果有人将“HMAC”解释成简明的H_ENGLISH的话。

你的确偶遇了一个有道理的蒸馏的基本概念,它是这样一简明的英语描述的: 一个服务器和客户端知道一个公钥和一个私钥;只有服务器和客户端知道私钥,但每个人都知道公钥。





但不关心别人所知道的。

一个客户端生成一个唯一的HMAC(哈希)表示它到服务器的请求。

通过把请求数据(参数和值或XML/JSON或任何它计划发送的数据)以及请求数据的散列blob和私钥结合来实现。

客户端随后将这个HASH以及所有它将要发送的参数和值一并发给服务器。

服务器接到请求,并使用与客户端相同的方式重新生成自己独有的基于提交值的HMAC(哈希)。

然后,服务器比较这两个HMAC,如果相同,服务器就信任这个客户端并执行请求。

这似乎很直截了当。

最初让你困惑的是,你以为原始请求是经过加密传送的,但实际上,HMAC方法所做的一切只是使用只有客户端和服务器才知道的私钥将参数生成为一些独特的校验和(哈希)。

随后,客户端将这个校验和及原始参数和值发给服务器,然后服务器复核校验和(哈希)以确定它接受客户端所发的请求。

因为根据假设,只有在客户端和服务器知道私钥,我们假设如果他们的哈希匹配,那么它们会互相信任,以至服务器随即正常处理这个请求。

你知道在现实中,这就相当于某人过来对你说:“Jimmy让我告诉你把钱给Johnny”,但你不知道这个人是谁,所以你要伸出手去试探他,看看他是否知道这个秘密握手。

如果三次握手证明无误,则通讯继续进行,否则中断通讯。

. 你明白了大概是怎么回事,但还是想会不会还有更好的方法呢?还好,有tarsnap网站 tarsnap帮你答疑解惑。

看看亚马逊是如何解决签名认证问题的Amazon screwed this up with Signature Version 1. 看完了亚马逊的web service是如何鉴权的,re-read how Amazon Web Services does authentication 讲的确实有道理,整个流程如下: [客户端]在调用REST API之前,首先将待发送消息体打包,bine a bunch of unique data together(websevice端将要接收的数据) [客户端]用系统分派的密钥使用哈希(最好是HMAC-SHA1 or SHA256 ) 加密(第一步的数据). [客户端]向服务器发送数据: 用户身份认证信息例如,用户ID,客户ID或是其他能别用户身份的信息。

这是公共API,大家都能访问的到(自然也包括了那些居心叵测的访问者)系统仅仅需要这部分信息来区分发信人而不考虑可靠与否(当然可以通过HMAC来判断可靠性). 发送生成的HMAC码. 发送消息体(属性名和属性值),如果是私有信息需要加密,像是(“mode=start&number=4&order=desc”或其他不重要的信息)直接发送即可. (可选项)避免重放攻击 “replay attacks” o的唯一办法就是加上时间戳。

在使用HMAC算法时加入时间戳,这样系统就能依据一定的条件去验证是否有重放的请求并拒绝. [服务器端]接收客户端发来的消息. [服务器端] (参看可选项)检查接收时间和发送时间的间隔是否在允许范围内(5-15分)以避免重放攻击replay attacks. 提示: 确保待检对象的时区无误daylight savings time 更新: 最近得到的结论就是直接使用UTC时区而无需考虑DST的问题 use UTC time . [服务器端]使用发送请求中用户信息(比如.API值)从数据库检索出对应的私匙. [服务器端] 跟客户端相同,先将消息体打包然后用刚得到的私匙加密(生成HMAC)消息体. (参看可选项) 如果你使用了加入时间戳的方式避免重放攻击,请确保服务端生成的加密信息中拥有和客户端相同的时间戳信息以避免中间人攻击man-in-the-middle attack. [服务器端] 就像在客户端一样,使用HMAC哈希加密刚才的信息体. [服务器端] 将服务器端刚生成的哈希与客户端的对比。

如果一致,则通讯继续;否则,拒绝请求! 提示: 在打包消息体的时候一定要考虑清楚,如果像亚马逊进行签名版本1中信息识别那样会面临哈希冲突的问题 open yourself up to hash-collisions! (建议:将整个包含URL的请求加密即可!) 特别提示:私匙绝对不能在通讯过程中传递,它仅仅用来生成HMAC,服务器端会自动查询出它的私匙并重新生成自己的HMAC.我来翻译公匙仅仅用来区分不同的用户,即使被破解也无所谓。

因为此时的消息无需判断其可靠性,服务端和客户端还是要通过私匙来加密(比如,前缀、后缀,倍数等等) 10/13/11更新:Chris最近发现 pointed out 如果在HMAC计算中加入了URI或是HTTP请求/回复,攻击者更易通过更改末端或是HTTP方法来搞破坏。

比如,在HTTP POST方法中将/issue/create改成/user/delete。

OIDC与OAuth有什么区别,国内有哪些身份认证厂商是支持OIDC协议的呢?

OIDC是基于OAuth2+OpenID整合的新的认证授权协议。

OAuth2是一个授权(authorization)的开放协议,OAuth2只解决了授权问题,没有实现认证部分,往往需要添加额外的API来实现认证。

而OpenID呢,是一个认证(authentication )的协议。

就好像一把钥匙可以打开你的家门,OAuth做的事情就是无论谁只要拿着这个钥匙就打开你的家门,OIDC做的是必须是你本人拿着这个钥匙才能打开你的家门,其他人不行。

OIDC技术还是很前沿的一项技术,目前国内外支持的厂商并不是特别多。

OKTA:国际巨头公司 / 身份认证的独角兽,目前不支持中国的服务。

九州云腾:国内公司 https:/// 模式有点像国内的OKTA,支持多种认证协议,国内少数支持OIDC身份认证的服务厂商。

安迅奔 :国内公司 / 国内老牌身份认证公司,自己的身份认证模式,还不支持OIDC认证协议。

腾讯微博获取的oAuth有什么方式保存?

第一步:请求code 字段 必须 说明 client_id true 申请应用时分配的app_key redirect_uri true 授权成功后的回调地址,即第三方应用的url response_type true 授权类型,为code wap false 主要用于指定手机授权页的版本,无此参数默认显示pc授权页面 wap=1时,跳转到wap1.0的授权页 wap=2时,跳转到wap2.0的授权页 不带本参数时,手机访问默认跳到wap2.0的授权页 返回结果: 如果授权成功,授权服务器会将用户的浏览器重定向到redirect_uri,并带上code,openid和openkey等参数,重定向的url如下: /example?code=CODE&openid=OPENID&openkey=OPENKEY 参数说明: 字段 说明 code 用来换取esstoken的授权码,有效期为10分钟 openid 用户统一标识,可以唯一标识一个用户 openkey 与openid对应的用户key,是验证openid身份的验证密钥 第二步:请求esstoken 请求地址: /cgi-bin/oauth2/ess_token?client_id=APP_KEY&client_secret=APP_SECRET&redirect_uri= /example&grant_type=authorization_code&code=CODE 请求参数: 字段 必须 说明 client_id true 申请应用时分配的app_key client_secret true 申请应用时分配的app_secret grant_type true authorization_code, refresh_token 当grant_type = authorization_code 字段 必须 说明 code true 调用authorize时返回的code redirect_uri true 回调地址,必须和请求code时的redirect_uri一致 当grant_type = refresh_token(目前暂不支持) 字段 必须 说明 refresh_token true 刷新token 返回结果: 返回字符串: ess_token=ACCESS_TOKEN&expires_in=60&refresh_token=REFRESH_TOKEN 参数说明: 字段 说明 ess_token 访问第三方资源的凭证 expires_in esstoken过期时间,以返回的时间的准,单位为秒,注意过期时提醒用户重新授权 refresh_token 刷新token(目前暂不返回) 使用场景: Implicit grant授权适用于没有server端的客户端应用,由客户端发起授权请求,保存和处理esstoken。

授权流程:

创梦云 香港沙田、长沙联通2核1G仅需29元一个月 挂机宝7元一个月

商家介绍:创梦云是来自国内的主机销售商,成立于2018年4月30日,创梦云前期主要从事免备案虚拟主机产品销售,现在将提供5元挂机宝、特惠挂机宝、香港云服务器、美国云服务器、低价挂机宝等产品销售。主打高性价比高稳定性挂机宝、香港云服务器、美国云服务器、香港虚拟主机、美国虚拟主机。官方网站:http://cmy0.vnetdns.com本次促销产品:地区CPU内存硬盘带宽价格购买地址香港特价云服务器1...

Sharktech$129/月,1Gbps不限流量,E5-2678v3(24核48线程)

Sharktech最近洛杉矶和丹佛低价配置大部分都无货了,只有荷兰机房还有少量库存,商家又提供了两款洛杉矶特价独立服务器,价格不错,CPU/内存/硬盘都是高配,1-10Gbps带宽不限流量最低129美元/月起。鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主...

1核1G仅38元/月起野草云服务器,香港/美国洛杉矶CN2+BGP云服务器,

野草云服务器怎么样?野草云是一家成立了9年的国人主机商家,隶属于香港 LucidaCloud Limited (HongKong Registration No. 2736053 / 香港網上查冊中心)。目前,野草云主要销售香港、美国的VPS、虚拟主机及独立服务器等产品,本站也给大家分享过多次他家的优惠了,目前商家开启了优惠活动,香港/美国洛杉矶CN2+BGP云服务器,1核1G仅38元/月起!点击...

oauth为你推荐
容灾备份容灾备份的容灾备份建设模式资源优化配置社会资源优化配置的标志是什么?怎样实现?光纤是什么什么是光纤.是什么材料做的?招行信用卡还款我是招行的信用卡!该怎么还款硬盘分区格式化怎样给硬盘分区并格式化sd卡座SD卡座有能满足CE认证的吗?黑屏操作电脑黑屏,什么都操作不了360官网打不开360浏览器打不开网页安全工程师待遇注册安全工程师现在一般工资是多少?未来前景如何分销渠道案例关于nike公司的分销渠道以及营销策略?
俄罗斯vps 最便宜虚拟主机 香港加速器 樊云 wavecom 海外服务器 紫田 payoneer 双11抢红包攻略 lamp配置 南昌服务器托管 申请个人网页 全站静态化 帽子云 789电视网 双12 闪讯官网 西安服务器托管 国外在线代理服务器 全能空间 更多