- 浏览: 335386 次
- 性别:
- 来自: 北京
文章分类
最新评论
1.什么是OAuth
OAuth协议致力于使网站和应用程序(统称为消费方)能够在无须用户透露其认证证书的情况下,通过API访问某个web服务(统称为服务提供方)的受保护资源。更一般地说,OAuth为API认证提供了一个可自由实现且通用的方法。
一个典型的例子是某打印服务提供商printer.example.com(消费方),希望在无须用户提供其照片存储站点密码的情况下,访问用户储存在photos.example.net(服务提供方)上的个人照片。
译言翻译:http://www.yeeyan.com/articles/view/freewizard/4418
2.Who Support
oAuth的诞生可以说是豪门云集啊。一出来的目标就是统一各个网络服务商的各自的登录/授权/认证API,例如Digg, Jaiku, Flickr, Ma.gnolia, Plaxo, Pownce, Twitter, Google, Yahoo, and others soon to follow。不服气的可以再去看看oAuth 1.0规范的作者列表,那些email地址都是牛B闪闪的大公司大巨头牛人啊。
3.Why OAuth
有很多的SNS网站,提供了通过联系人的Email匹配查找朋友的功能,对于大多数人来说,再是否做这一步的时候,都会有所迟疑,通常情况下,用户只会在自己信任的网站上这么做,不过即便这样,心里总会多少有些异样,毕竟是把帐号和密码给了别人,虽然别人保证不记录、不作第二次使用。
透过统一的OAuth机制,上面的这些个迟疑就可以避免了。和Flickr的认证类似,只需要在自己原来的网站认证就可以了,不需要提供帐号和密码给其他人。
4.How To Use
google提供了各种语言的OAuth库:http://code.google.com/p/oauth/
5.Example for Ruby
1.下载OAuth库
gem install oauth
2.以豆瓣为例
# Douban OAuth认证包括以下四步内容 # 1. 获取Request Token # 2. 用户确认授权 # 3. 换取Access Token # 4. 访问受限资源 gem 'oauth' require 'oauth/consumer' api_key = "" api_key_secret = "" @consumer=OAuth::Consumer.new( api_key, api_key_secret, { :site=>"http://www.douban.com", :request_token_path=>"/service/auth/request_token", :access_token_path=>"/service/auth/access_token", :authorize_path=>"/service/auth/authorize", :signature_method=>"HMAC-SHA1", :scheme=>:header, :realm=>"http://yoursite.com" } ) puts "1. 获取Request Token" @request_token=@consumer.get_request_token puts "2. 用户确认授权" puts "请将下面url粘贴到浏览器中,并同意授权,同意后按任意键继续:" puts @request_token.authorize_url gets puts "3. 换取Access Token" @access_token=@request_token.get_access_token # i should re-generate access_token proxy here, # since ruby oauth library assume the domain of the auth site should be same with the resource site @access_token = OAuth::AccessToken.new( OAuth::Consumer.new( api_key, api_key_secret, { :site=>"http://api.douban.com", :scheme=>:header, :signature_method=>"HMAC-SHA1", :realm=>"http://yoursite.com" } ), @access_token.token, @access_token.secret ) puts "4. 访问受限资源" @response=@access_token.post "/miniblog/saying", %q{<?xml version='1.0' encoding='UTF-8'?> <entry xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/"> <content>Ruby OAuth Authorized</content> </entry> }, {"Content-Type" => "application/atom+xml"}
这里是douban-api-client的ruby实现,http://doubanclient-ruby.googlecode.com/svn/trunk/
评论
可以直接用证书进行认证吗?
貌似不可以的,您看一下OAuth核心规范:
OAuth认证是指用户在不共享其证书(密码)的前提下授权消费方访问其受保护资源的过程。 在请求受保护资源的过程中OAuth使用服务提供方生成的令牌替代了用户的证书。 这一过程使用两种类型的令牌:
请求令牌:
用于消费方向用户请求对访问受保护资源的授权。 经过用户授权的请求令牌可以换取一个访问令牌,只能使用一次,不得用于其他用途。 建议为请求令牌设置一个有限的生命期。
访问令牌:
用于消费方代表用户访问受保护资源。 访问令牌可以被用于限制访问特定资源,可以只有有限的生命期。 服务提供方应当允许用户收回访问令牌。应当只有访问令牌被用于访问受保护资源。
其实,这正是OAuth认证的优点:安全(虽然麻烦了一些)。相比HTTP Basic认证,,不需透露密码给第三方网站,而且授权后可以随时解除授权,,用户自身的顾虑少了。
发表评论
-
新博客
2012-04-23 20:47 1735https://db-china.org -
Ruby Verbose Warning Mode
2011-10-16 14:48 2052Ruby在很多方面是一个更优雅的Perl,从Perl社区继承了 ... -
Pattern Match In Ruby
2011-10-07 01:17 2007最近看了一些Erlang,模式匹配是个好东西,简单的sum函数 ... -
Draper: View Models for Rails
2011-10-07 01:19 2270Draper是一个Ruby gem,它让Rails model ... -
Active Record batch processing in parallel processes
2011-10-07 01:20 2271Active Record 提供 find_each来分批处理 ... -
最轻量级的Ruby后台任务
2011-08-04 16:47 3861普通情况下ruby调用系统命令行的过程是堵塞的,无论是用sys ... -
test
2011-07-15 19:59 0test -
fiber
2011-06-17 09:37 0挖坑,待填。。 1.用到fiber.alive?、fiber ... -
Identity Map in Rails3.1
2011-06-12 18:29 2738Identity Map是Rails3.1的又 ... -
xx00
2011-06-06 03:40 0https://github.com/ngmoco/cache ... -
挖坑1
2011-06-06 02:17 0cache money 源码 替换memcache为redis ... -
websocket demo
2011-06-04 20:44 2055地址:https://github.com/hooopo/we ... -
ruby GC
2011-06-02 04:24 0http://blog.csdn.net/lijun84/a ... -
reduce method missing call stack with dynamic define method
2011-04-22 22:54 1594method_missing是ruby里面一个非常cool的h ... -
Autocompete with Trie
2011-04-09 04:04 1675像微薄里面用户输入一 ... -
用imagemagick和tesseract-ocr破解简单验证码
2011-04-09 01:31 18929工具:imagemagick + tesseract-ocr ... -
OAuth gem for rails,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博
2011-03-26 03:13 4481地址:https://github.com/hooopo/oa ... -
用jmeter模拟amf请求进行压力测试
2010-12-16 16:56 30231.获取amf二进制包: 在本地建立proxy,端口为888 ... -
Memoization in Ruby
2010-11-14 11:42 1211这里的Memoization就是将ruby的方法或lambda ... -
整理了一下2008-2010的RubyHeroes博客列表
2010-10-07 02:26 2829Bryan Helmkamp(webrat作者)https:/ ...
相关推荐
《企业级集成与Ruby》是一本深入探讨如何在企业环境中使用Ruby进行系统集成的专业书籍。Ruby作为一种动态、灵活且富有表现力的编程语言,近年来在软件开发领域得到了广泛应用,尤其在集成不同系统和服务方面展现出...
OmniAuth 是 Ruby 社区中一个非常流行的库,它为构建灵活的身份验证系统提供了一个统一的接口。这个系统尤其适用于处理多种外部服务的身份验证,如 OAuth 提供者(如 Google、Facebook 和 Twitter)。Ruby 开发者...
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end response = conn.get '/path' puts response.body ``` 在这个例子中,我们创建了一个新的Faraday连接对象,设置了日志响应中间件,...
5. **Integration with Frameworks**: 在Ruby on Rails或其他Web框架中,你可以集成`jose`库来处理用户认证、API安全等。 总之,Ruby的JSON对象签名和加密(JOSE)提供了一套强大的工具,用于在JSON数据中实现安全...
<%= link_to "Sign in with Google", user_omniauth_authorize_path(:google_oauth2) %> ``` 这个过程涉及的主要知识点包括:Devise的身份认证机制、OmniAuth的工作原理、谷歌OAuth2的配置和使用,以及如何在Rails...
6. **文件结构**:"create-react-app-with-rails-boilerplate-master" 这个文件名可能表示这是一个基于CRA创建的React项目,其中包含与Rails API集成的基础模板。你可能会找到前端的源码(如`src`目录)、Rails的...
Ruby聚会2 用于处理 Meetup API 的轻量级 Ruby 客户端。 要求 支持 net/http[s] 的 Ruby 实现 安装 $ gem install ruby_... > # do something with json_s 与 OAuth 2 access_token 一起使用 > client = RubyMee
#Canvas 入门应用该项目为构建 Canvas LTI 或 OAuth 应用程序提供了一个起点。 ##Running Canvas Starter App ###With Foreman Foreman 可以轻松启动在开发模式下运行应用程序所需的所有服务。 要使用 foreman 启动...
Zuul 认证服务器 基于 OAuth 2.0 的认证服务器,支持用户注册和配置文件管理,以及客户端注册和管理。 要求 身份验证服务器需要 Ruby 2.0.0 或更高版本,因为它对令牌使用 AES/GCM ... #=> should print something with
Discourse Doorkeeper 单点登录插件此...replace MODEL with your user class name, i.e. user 在你的 routes.rb 文件中添加一个根路径: root to : "home#index" (如果您没有主页,那么现在是创建主页的好时机)。
gem 'firstmiler_sms_oauth', '0.1.1' 用法 Initialize Before you can do anything, you must have a initializer file with exotel credential. FirstmilerSmsOauth.configure do |c| c.exotel_sid = "exotel...
客户端初始化require "garage_client"# First, you have to create a GarageClient::Client with an access token.# You can get `YOUR_ACCESS_TOKEN` with OAuth 2.0 flow.client = GarageClient :: Client ....
自述 此自述文件通常会记录... Ruby版 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列、缓存服务器、搜索引擎等) 部署说明 … 如果您不打算运行rake doc:app请随意使用不同的标记语言。
标题 "nuxt_with_rails" 暗示我们正在探讨如何将 Nuxt.js,一个基于 Vue.js 的前端框架,与 Ruby on Rails 后端框架整合。这个项目可能涉及创建一个全栈 Web 应用程序,其中前端使用 Nuxt.js 提供优化的用户界面和...
吉邮件 ... # do something with message end 发展 记录HTTP响应装置 获取访问令牌并将其提供给cURL: $ curl -i -H "Authorization: Bearer A_VALID_ACCESS_TOKEN" https://www.googleapis.com/gmail/
使用HTTPS加密通信、OAuth2.0或JWT(JSON Web Tokens)进行身份验证也是常见的安全措施。 6. **并发处理**:服务器端程序需要处理多个并发请求,多线程或多进程模型、事件驱动模型(如Node.js的Event Loop)或异步I...
4. **实现认证和授权机制**:为了保证API的安全性,需要实现用户认证和权限管理功能,例如使用JWT(JSON Web Tokens)、OAuth等方式。 5. **错误处理**:定义一套统一的错误处理策略,当请求无法正确处理时能够向...
Rails,基于Ruby语言,是一个流行的Web应用框架,遵循“约定优于配置”的原则。它支持RESTful设计模式,使得API的创建变得简单。在这个项目中,Rails作为后台服务,处理数据存储、CRUD操作以及与前端的通信。开发者...
此示例应用程序还将oauth2与doorkeeper结合使用,并将oauth流集成到swagger UI中 运行示例: 运行bin/setup ,它还将运行db:seed任务来创建oauth所需的Swagger用户和应用程序模型。 确保详细信息与config/...
自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 ... 在测试中使用“ login_with_oauth”绕过google oauth身份验证! -丹尼尔·潘(Daniel Phan)