Open Id and Open Auth

Open Id and Open Auth


1.authentication(身份验证) and authorization(授权)


Open Id

OpenID is a decentralized authentication protocol that makes it easy for people to sign up and access web accounts.


OpenId是一个登录协议


Oauth

An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.


Oauth是一个授权协议


似乎他们是不同领域的两种协议。

仔细想想下面的几个问题,就可以就知道他们的本质了。

a.登录了以后做什么?

b.不登录如何授权?


2.各个应用分析


登录Google Facebook都提供OpenId和Oauth服务,可以使用他们的帐号登录其他允许的网站。

Linkedin 提供Oauth服务, 可以使用他的帐号登录其他允许的网站。

人人网也提供Oauth服务。雅虎、淘宝、QQ等都提供类似的Oauth服务。

OpenId  依赖方(Relying Party, RP) 身份提供者(Identity Provider, IdP)
Oauth  Consumer  服务提供商


有了这两种技术促进了各网站间融合。


典型应用:

一般依赖方(Consumer)都是影响力小一些的网站,提供商都是大网站。大网站希望小网站来丰富他的功能,小网站希望大网站给他带来用户等资源。


大网站(服务提供商)可以根据商业策略对小网站的相关功能做一些限制,有的限制大,有的限制小。

像淘宝和QQ这样的强势中国网站,对使用Oauth的数据有很多限制和审核流程。

美国的大网站要开放的多。无论怎样还是为背后的商业目的说驱动。


3.技术分析

OpenId

http://openid.net/get-an-openid/what-is-openid/

http://openid.net/get-an-openid/start-using-your-openid/ 

http://www.iteye.com/news/4003 

流程:

1. 获取用户提供的标识符:RP 获得用户的 OpenID。

2. 发现:RP 规范化用户提供的标识符,以决定联系哪个 OP 进行身份验证,如何与其联系。

3. 关联:RP 和 OP 建立一个安全通信渠道。

4. 身份验证请求:RP 要求 OP 对用户进行身份验证。

5. 验证:RP 向 OP 请求用户名验证,并确保通信没有受到干扰。

6. 转到应用程序:身份验证之后,RP 为用户指向其先前请求的资源。

Oauth

http://oauth.net/ 

http://developers.facebook.com/docs/authentication/ 

API Key:ggZ1

Secret Key:iImb

1. 用户访问RP ,

2. RP 要求 OP 对用户进行身份验证

3. 跳回RP,RP得到Access_token


基本流程就是如我以上所说的。Oauth需要在服务提供商网站上申请开发者帐号。


4.整合项目角度分析

openid要标准一些,实现了依赖方网站以后,各个服务提供商的openId帐号都可以登录。

Oauth各个网站虽然基本功能差不多,各个提供商都需要申请帐号,独立整合,而且提供的数据还不一样。

所以需要按照产品的设计一个一个的整合和维护,将会比较费时费力。


5.实现的类库


我试过下面类库,都非常简单。

OpenId:

http://code.google.com/p/joid/

Oauth:

使用服务提供商给的Javascript类库或REST类库

猜你喜欢

转载自fly-hyp.iteye.com/blog/1065920