oAuth无痛入门指南

《动手做科研》一步一步地展示如何入门人工智能科研 我在各个平台上都积极地回答过自己做科研入门的经验,以及后来切实地帮助近100名同学规划研究路径,并切实地取得阶段性成果时时,我惊讶地发现:其实大家都能在掌握基本地科研技巧之后,能自主地将工作做得很好,并且能从容地面对问题。对于入门,最理想的状态是用最短的时间,按照循序渐进的难度顺序把必要的方法和工具都学会,即用最少必备的知识搭建起框架。但是,大家都说科研要自学,要自学,却没告诉你怎么学。市面上有教你如何写好代码的,如何刷题的,也有教机器学习的,但是没有一个资料告诉你,我要做好科研,我每个阶段该做什么。 阅读详情

http://atomti.iteye.com/blog/510070

 

决心写个入门指南,理清思路。当然,如果你真的要仔细研究下oAuth,请看官方文档 http://oauth.net/core/1.0/ 。这里的东西最权威。也可以去oAuth邮件列表讨论。

一句话oAuth

oAuth涉及到3大块的交互和通信。1. 用户,2. 拥有用户资料/资源的服务器A,3. 求资源的服务器B,。

oAuth的典型应用场景(senario)

以前,用户在 拥有资源 的的网站A有一大堆东西;现在用户发现了一个新的网站B,比较好玩,但是这个新的网站B想调用 拥有资源的网站A的数据。

例如,

  • 在线打印服务的网站,需要调用我的私人Flickr图片。
  • xiaonei.com之类的SNS在线社交网站需要从我的Hotmail导入联系人

那么有以下几个方法:

  1. 需要转移的数据如果是一段文字的话,用户自己Ctrl+C, Ctrl+V。如果是图片呢?复制就麻烦了。
  2. 用户自己下载再上传。——麻烦
  3. 用户老老实实把自己账户ID和密码交上来,服务器自动去抓取。——这个等于把自己家的钥匙给别人来让别人借书一样。。。

oAuth的方式

用户在 求资源的网站B 上,点击一个URL,跳转到 拥有 资源的网站A。
拥有资源的网站A提示:你需要把资源分享给B网站吗?Yes/No。
用户点击 Yes,拥有资源的网站A 给 求资源的网站B 临时/永久 开一个通道,然后 求资源的网站 就可以来 拥有资源的网站 抓取所需的信息了。

那么具体的说就有3个步骤:

  1. 首先是2个服务器之间的。求资源的网站B向拥有资源的网站A发送一个请求。术语叫Obtaining an Unauthorized Request Token。具体的作用,类似写了一个“资源远程调用申请书”给 拥有资源的A网站
  2. 第二步是,用户在拥有资源的网站A 通过/允许这个请求。术语叫Obtaining User Authorization。类比一下,就是用户给这个申请书盖章通过啦。
  3. 最后一步仍然是服务器之间的通信。回到B网站,求资源的网站B临时/永久拥有了在A网站远程调用资源的权限,术语又叫Obtaining an Access Token。就好比得到了一个“黄金招牌(Access Token)”。只要每次带上这个“黄金招牌”,求资源的网站B 就可以大摇大摆去 拥有资源的网站A 抓取任意有权限可以被抓取的资源了。具体的技术细节,就是拥有资源的服务器A返回了类似这样的一个application/x-www-form-urlencoded字符串:oauth_token_secret=ssssssssss&oauth_token=ttttttttttttttt&other_parameters=1331775,这个时候,oauth_token 就相当于用户的密码,你可以用这个oauth_token做任意权限之内的事情了。oauth_token_secret是私钥。other_parameters是服务器返回的其它可选参数。一般来说,你可以把这个oauth_token的值保存起来,下次接着用。而且一般来说一个用户和一个oauth_token是一一对应的。

oAuth flow

传递oAuth参数

Technically。当然2个服务器之间传输数据的时候,这里面有一些秘密的oAuth参数以保障整套体系是安全可靠的。这些参数叫Consumer Request Parameters(在oAuth 1.0规范5.2里定义的)。具体的来说,传递oAuth参数有3种方法:

  1. 通过HTTP GET,在URL里面,? 后面的一堆参数。个人不推荐这种方法,因为用一个iframe或者img就可以被XSS了。
  2. HTTP POST方法,参数Content-Type格式为application/x-www-form-urlencoded
  3. 通过Authorization这个HTTP头。传递的东西有一定的格式要求,叫OAuth HTTP Authorization Scheme

这套体系有个比较龌龊的特性,对开发人员十分麻烦,但是对保密性做得比较好,叫“签名”。而且这个特性不是可选的,是必须的。

签名

什么是 签名(Signature)
数字签名不是指将你的签名扫描成数字图像,或者用触摸板获取的签名,更不是你的落款。
数字签名在防止篡改,防止重放攻击,保证数据完整性,防止假冒签名,防止签名者抵赖方面更有效。在中国大陆,数字签名是具法律效力的。

目的:在保证安全(不泄漏密码,防止中间人攻击)的前提下,尽量简单的设计一套可靠“授权”体系。

oAuth官方定义了3种方式,分别是HMAC-SHA1, RSA-SHA1和PLAINTEXT。当然各个支持oAuth的服务器也可以自定定义一套体系。但是签名的大概过程都差不多。

需要签名的数据依次是:

  1. HTTP方法是GET, POST还是HEAD?
  2. 规范化表示的HTTP URL
  3. 编码合并过后的oAuth参数列表

这3部分需要用 & 符号连接起来,然后交给hmac或者RSA加密。当然我讨厌这么麻烦的方式,所以我用最后一种,也是最简单,各个oAuth服务基本都支持的“签名”方式:PLAINTEXT。

具体的很简单,每次请求的时候,oAuth参数包括一个oauth_signature就行了。值就是拥有资源服务器提供的secret key

再次讨论oAuth参数:术语解释

oauth_consumer_key
求资源的网站B的一个标识符。可以认为世界上有许许多多类似 网站B 这样的需求。每一个服务都给了一个唯一的标识符。这个东西哪里来的?自己去问 拥有资源的网站A。例如douban就提供了一个Douban API Key,这里就填Douban API Key好啦。
oauth_consumer_secret
上面那个东西的私钥。如果是Douban,就填API Key的私钥。
oauth_token
oAuth进行到最后一步得到的一个“黄金招牌”。有了这个“黄金招牌”,求资源的网站B就可以大摇大摆去 拥有资源的网站A 抓取任意有权限可以被抓取的资源了。
oauth_token_secret
上面那个东西的私钥
oauth_signature_method
签名方法。三选一:SHA1, RSA-SHA1或者PLAINTEXT。哦。不对。不是三选一,oAuth服务商可以自定义的。
oauth_signature
签名值。这个得靠你自己把数据揉到一个加密函数里算出来。具体如何算看这里
oauth_timestamp
时间戳。timestamp。不懂的自己google。
oauth_nonce
这个就是一个临时值,只要保证每次请求,这个值都不一样就行了。一般随机生成一截数字。

实践

说了这么一大堆东西,还是应该弄一个library来完成这一系列工作。哈哈。不要重复发明轮子嘛。例如oauth-python。我个人觉得很可惜的是,如果你有把这个库弄懂,会用那个精力,还不如自己实现一个库算了。汗。

oAuth的其他

oAuth在安全领域里,是一套相当有Web特征的“授权(authorization)”体系。

oAuth有个好处,就是认证不一定是基于Web的,假如你写了个桌面程序,或者说widget,或者说javascript webapps,也可以直接采用oAuth。其实est个人在想的话,如果采用各个浏览器的cookiejar文件解析 + Flash的LSO,加上oAuth,基本可以做到一次登录永久授权了。

oAuth的诞生可以说是豪门云集啊。一出来的目标就是统一各个网络服务商的各自的登录/授权/认证API,例如Digg, Jaiku, Flickr, Ma.gnolia, Plaxo, Pownce, Twitter, Google, Yahoo, and others soon to follow。不服气的可以再去看看oAuth 1.0规范的作者列表,那些email地址都是牛B闪闪的大公司大巨头牛人啊。

国内的话,Douban采用的是oAuth,虽然用起来有点麻烦,但是支持oAuth应该算一个非常国际化标准化的举措了。

问题在哪里?

假如有一个网站,既扮演了求资源的服务器A这个角色,又扮演了用户角色。加上X技术Y方法Z漏洞。。。。。

【计算机科研入门合集】 目前本人研一下学期,写博客主要督促自己学习,总结科研当中学习、搜集到的内容,也作为自己的学习笔记;发布在博客上也供各位和我一样的科研小白共同学习。科研路漫漫,给自己加油! 阅读详情

相关推荐

硕士阶段人工智能有哪些比较好的发论文的方向?

人们对于一些新时代诞生得词语总是会提出疑问,比如说什么是人工智能? 在帮助盟军通过破解纳粹加密机Enigma赢得第二次世界大战后不到十年,数学家艾伦·图灵(Alan Turing)第二次改变了历史,提出了一个简单的问题:“机器能思考吗?”图灵1950年的论文“计算机与智能”及其随后的图灵测试确立了人工智能的基本目标和愿景。从本质上讲,人工智能是计算机科学的一个分支,旨在肯定地回答图灵的问题。它是在机器中复制或模拟人类智能的努力。人工智能的广泛目标引发了许多问题和辩论如此之多,以至于没有一个单一的领域定义被

weixin_42009785的博客 4493

JDK7 API 下载(我从oracle官网上下下来的)

JDK7出来也有一段时间了,很多朋友找不到API下载地址,在这里我就共享我从官网下载的JDK7的API。

AI4Research:人工智能如何重塑科研全流程,提升科研生产力

人工智能(AI)正通过自动化与智能化技术,深刻改变传统科研模式。其核心原理在于利用机器学习、自然语言处理等算法,模拟并优化人类在信息处理、模式识别和决策制定中的能力。从技术价值看,AI能显著提升科研效率,将研究者从重复性劳动中解放,聚焦于创造性工作。在应用场景上,AI已渗透至文献调研、实验设计、数据分析和论文撰写等科研全链条。具体而言,通过构建智能工作流,结合大语言模型(LLM)和计算机视觉(CV)等工具,可实现从知识发现到成果产出的自动化辅助。例如,利用AI进行文献挖掘与趋势分析,或使用预训练模型对实验图

weixin_30753873的博客 698

Redis 学习整理

redis 缓存框架

诗和远方 1576

GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图

ChatGPT科研必备GPT汇总介绍(寻找好用的GPTs模型、提示词优化、生成思维导图、生成PPT、生成视频、制定个性化的学习计划、检索论文、总结论文内容、总结视频内容、撰写论文、论文翻译、论文润色与修改、参考文献格式管理、论文评审、数据分析、生成代码、代码调试等)1、课题申请书撰写技巧及要点剖析(项目名称、关键词、摘要、立项依据、参考文献、研究目标、研究内容、研究方案、关键科学问题、可行性分析、创新点与特色之处、预期研究成果、工作基础等)折线图、柱状图、饼图、地图等各种图形的绘制)Python程序注释)

JWW19903121626的博客 3332

AI在科研领域的应用

"AI在科研领域的应用" 作者:禅与计算机程序设计艺术 1.背景介绍 近年来,人工智能技术在科研领域的应用日益广泛和深入。AI在加速科学发现、优化实验设计、分析海量数据等方面发挥着越来越重要的作用。本文将探讨AI在科研中的主要应用场景,分析其核心技术原理,并展望未来的发

AI天才研究院 1415

Redis 设置密码无效问题解决

一、验证密码有没有生效 运行cmd,cd到redis的目录下 输入“redis-cli.exe” 回车 输入“auth 123456” 回车 若错误,说明没有设置密码或者设置的密码没有生效 输入“exit” 回车就立即退出redis 二、解决方案是:直接修改后缀是 .conf 的文件,再用命令启动 在redis的目录下找到后缀是 .conf 的文件,文件的名称不统一,以我的为例如下图 我有两个后缀是 .conf 的文件,这两个文件都用编辑器打开,比如我用Notepad++打开的。

weixin_42045719的博客 1万+

科研技能:数据分析工具和人工智能分享

你只需要告诉 ChatGPT:“我有一组实验数据,包括温度和反应速度,能帮我写个 R 程序分析这两者的关系吗?: 比如,实验数据量太大,你需要用机器学习做分类。我会先用 Python 写一个数据预处理的代码,然后结合 OpenAI API,快速生成一个决策树模型来分类,还能自动调整参数,找到最优解。现在的 AI 工具简直是科研人员的福音,尤其是处理复杂数据或者写论文的时候,用得好就跟开挂一样。:如果你的数据量不大,还是喜欢用 Excel,那 AI 插件可以帮你自动分析数据。本文由博客一文多发平台。

jilinzhang7710的博客 1786

io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.

在不带配置文件启动reids,配置文件配置的密码是不起作用的 示范如下: 1、执行auth 123456 会出现(error) ERR Client sent AUTH, but no password is set的错误 D:\Redis>redis-cli.exe 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is set 2、继续通过执行config get r...

请告诉他 1万+

人工智能、机器学习和深度学习的区别

人工智能、机器学习与深度学习的关系综述 本文系统阐述了人工智能、机器学习和深度学习三者的关系与发展现状。人工智能作为总领域,包含专家系统、机器学习等7大研究方向;机器学习作为其子集,通过算法解析数据实现智能预测;深度学习则是机器学习的分支,采用神经网络模拟人脑机制。文章重点介绍了10大机器学习算法及其应用场景,并列举了深度学习在图像识别、自动驾驶等11个领域的突破性进展。三者呈现金字塔式的包含关系:人工智能>机器学习>深度学习,共同依赖大数据和强大算力支撑。当前研究主要集中在"弱人工智

Hongwei_1990的博客 3937

AI科普 | 什么是人工智能的本质?

传统软件就是「if-then」的强逻辑,人类通过自己的生活、工作经验总结出一些有效的规则,然后让计算机自动运行这些规则。传统软件永远不可能超越人类的知识边界,因为所有规则都是人类制定的。人工智能的基本原理:机器从「特定的」大量数据中总结规律,形成某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。人工智能本质上是一种工具,只能解决特定的问题,而不是什么都能做。​。

python122_的博客 1万+

解决redis报错:NOAUTH Authentication required

报错如下:redis.windows-service.confrequirepass xxxxredis-cliauth 123456ping配置文件ymlredispasswor: xxxxkj。

weixin_47902851的博客 1506

【人工智能】人工智能就业岗位发展方向有哪些?

人工智能领域的岗位多样,涵盖了从技术研发到应用实施、从产品设计到市场运营等各个方面。以下是对人工智能方向岗位的详细介绍:

weixin_51306394的博客 1611

安装redis后,报错(error) ERR Client sent AUTH, but no password is set

安装redis后,报错(error) ERR Client sent AUTH, but no password is set 解决方法: 1、启动Redis服务 双击redis-server启动服务 2、cmd命令行进入到Redis文件夹中redis-cli目录,或者点击redis-cli右击以管理员身份运行,打开命令窗口 3、检查是否设置了密码 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is

weiwu13的博客 2302

Nature 2050年科学展望,当超级人工智能与无人实验室到来之时,我们的职业方向还有哪些?

在2050年来之前,我们的职业该何去何从?

CyberSoma的博客 1704

人工智能的未来:从弱 AI 到通用人工智能(AGI)

从最初的简单自动化程序,到如今的深度学习大模型(如 ChatGPT、DeepSeek、Grok),AI 逐步从弱人工智能(Weak AI)向更智能、更自主的方向发展。AI 的发展将影响就业市场,取代重复性、低技能的工作,同时创造新的高技能岗位。尽管深度学习带来了巨大的进步,但它仍然依赖大量标注数据进行训练,对新环境的泛化能力有限,这也是当前 AI 迈向 AGI 的关键障碍之一。本文将探讨 AI 从弱 AI 进化到 AGI 的可能性,分析目前 AI 技术的局限性,并展望未来 AI 在各个行业的影响。

qq_20245171的博客 1万+

【人工智能入门必看的最全Python编程实战(6)】

计算机领域顶会论文,CCF,SCI,EI,专利竞赛软著等1v1论文辅导!👇【立即咨询】一站式服务,短期快速投稿💥个性化的指导和顶尖的科研团队支持,助您攀登科研高峰对于计算机专业的硕博生来说,拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票!!!🏃无论您是想申请研究生、博士生,还是渴望赴海外留学,或是立志进入大厂的核心岗位,一篇高质量的SCI/CCF论文是关键所在!我们的团队充满热情和专业知识,致力于为您提供卓越的科研指导和论文辅导服务。

DFCED的博客 1576

PCB设计必看:铜皮厚度与载流量的黄金比例(附实用对照表)

本文深入探讨了PCB设计中铜皮厚度与载流量的关键关系,提供了实用的对照表和设计技巧。通过分析基础原理、标准选择策略及常见误区,帮助工程师优化PCB设计,确保电路板的可靠性和安全性。特别适用于需要处理大电流或高频应用的电子设计场景。

milk8的博客 511
上一篇: CRM 客户关系管理和云计算...Salesforce企业级云计算的领导者...
下一篇: JAVA新手学习指南
emptynull
博客等级 码龄15年 4粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值