oauth认证原理
oauth认证原理
贷款卡年检所需资料1 次投票 洛克王国猫眼石
yuren韩国人当场污辱魏晨 分享于 2 个月 前, 2 条回复, 376 次浏览
Share |
OAuth是一个开放的认证协议,让你可以在Web或桌面程序中使用简单而标准的,安全的API认证。
OAuth有什么用?为什么要使用OAuth?
用户希望在第三网站和应用上使用他在SNS网站上的用户信息,这些第三方网站联系SNS网站,但是由于没有用户认证信息,这时这些用户信息是不允许访问的。
举个我们身边国内的例子吧:比如 团购网站 你需要把一条团购信息发到你的新浪微博上并
通知你的好友,以前的方法是你需要在团购网站输入你的新浪微博账号,密码才能调用,虽然网站上可能都自谓“不保留新浪微博用户名密码”,但是大家信吗?
OAuth就是为了解决这个问题而诞生的,用户访问第三方资源,不再需要网站提交你的用户名,密码。这样好处自己是安全,而且不会泄露你的隐私给不信任的一方。
在认证和授权的过程中涉及的三方包括:
菠萝蜜怎么剥
服务提供方:用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。(上述所说的 新浪微博) 用户:存放在服务提供方的受保护的资源的拥有者。(你) 如何兑换话费积分客户端:要访问服务提供方资源的第三方应用,通常是网站,如提供照片打印服务的网站。在认证过程之前,客户端要向服务提供者申请客户端标识。(上述所说的团购网站,也叫第三方网站)
使用OAuth进行认证和授权的过程如下所示:
在职读硕1第三方网站向SNS网站授权服务发出获取request token的请求。SNS授权服务响应请求,返回一个尚未认证的request token.
2第三方网站获取响应中包含的request token,按照协议规范,附带这个request token,将其重定向到SNS提供的授权页面(User Authorization URL)。如果用户没有登录,用户向普通登录一样,输入用户名和密码完成登录。如果用户已经登录(使用记录Cookie的方式),会出现一个页面,问用户 是否允授权共享他的SNS信息给第三方网站。
3一旦用户选择授权第三方网站,SNS网站将把Web浏览器重定向到第三方网站,同时把SNS的用户信息传递过去。 用户决定允许或拒绝授权给第三方网站,如果用户拒绝授权给此第三方应用,则被重定向到SNS的页面,而不会再回到第三方应用的页面上。 如果用户授权给第三方网站,那么,SNS授权服务接收此请求,将用户重定向到第三方网站提供的页面上,并传递被认证了的request token。这样第三方网站就可以访问SNS网站的用户信息了。
4第三方网站接收到认证的request token后,再次向SNS账号服务发起一次HTTP请求,以换取access token。 SNS 账户授权服务接收请求,验证是否合法。如果合法,则返回一个access token。
OAuth安全机制是如何实现的?
OAuth 使用的签名加密方法有 HMAC-SHA1,RSA-SHA1 (可以自定义)。拿 HMAC-SHA1 来说吧,HMAC-SHA1这种加密码方法,可以使用 私钥 来加密 要在网络上传输的数据,而这个私钥只有 Consumer及服务提供商知道,试图攻击的人即使得到传输在网络上的字符串,没有 私钥 也是白搭。
私钥是:consumer secret&token secret (哈两个密码加一起)
要加密的字符串是:除 oauth_signature 外的其它要传输的数据。按参数名字符排列,如果一样,则按 内容排。如:domain=kejibo&oauth_consumer_key=XYZ& word=welcome………………….
前面提的加密里面都是固定的字符串,那么攻击者岂不是直接可以偷取使用吗?
不,oauth_timestamp,oauth_nonce。这两个是变化的。而且服务器会验证一个 nonce(混淆码)是否已经被使用。
那么这样攻击者就无法自已生成 签名,或者偷你的签名来使用了。
后面我会专门写一些具体的代码实现 针对 新浪微博
感谢:aoner的分享

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。