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类库
分享到:
相关推荐
商户授权成功后,pc或者钱包客户端会跳转至开发者定义的回调页面(即redirect_uri参数对应的url),在回调页面请求中会带上当次授权的授权码app_auth_code和开发者的app_id,示例如下:
C#获取支付宝用户信息,... var url = string.Format("https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id={0}&scope=auth_user&redirect_uri={1}", appid, ENCODED_URL); Response.Redirect(url); }
@ storyblok / nuxt-auth 用于Nuxt.js的Storyblok身份验证模块 ... id : 'Client ID from Storyblok App' , secret : 'Secret from Storyblok App' , redirect_uri : 'REDIRECT_URI' // Equal to callbakc URL of O
// Create an auth object with client id and secretconst auth = new Auth ( client_id , client_secret ) ;// Fetch your access tokenauth . clientCredentialsFlow . fetchAccessToken ( ) . then ( response =...
OAuth 2.0和Open ID Connect 目标: 了解什么是OAuth v2.0和Open ID Connect,以及它们之间的关系 了解OAuth和Open ID Connect解决的问题 了解OAuth适用于不同类型的应用程序和用例 能够创建使用Google的OAuth和...
该资源是支付宝提供给用户使用的接口,用户可以对其中的代码进行修改以实现自己想实现的功能
该SDK提供了用于将Open Banking授权流集成到NodeJs服务器应用程序中的工具。 该存储库包含两个子文件夹: / src包含SDK源代码/ example包含有关如何使用SDK的示例如何使用SDK 首先,请通读API文档的“授权”部分。 ...
:open_book: :robot: 特征 VKontakte API的100%覆盖率 可预测的抽象 处理大量数据 简易授权表 安装 12.0.0或更高版本 NPM npm i auth-vk npm i passport 与图书馆的互动 Послеустановкибибл...
scm-auth-oidc-插件 这是一个SCM Manager插件,它使您可以使用外部OpenID Connect Provider进行用户注册和身份验证。 为了进行测试和集成,我们已经使用Keycloak身份和访问管理软件( )验证了设置。 配置 从插件...
具有开放ID的Golang身份验证-演示 该应用程序将向您展示如何建立和保护注册,登录帐户。 您将使用Go创建一个API,并使用React创建一个将消耗您的API的前端。 您将使用Auth0保护API,以便只有经过身份验证的用户才能...
在本例中,从CLI打开带有查询参数id的URL: open(https://npm-janitor.herokuapp.com/login?id=42) 用户登录并为注册的应用程序提供权限,然后看到一条消息: DONE! CHECK YOUR CLI DONE! CHECK YOUR CLI 。 在...
1,https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=2019090***862044&scope=auth_user&redirect_uri=http://****.com/success1 第一步先拼接字符串,然后浏览器访问该字符串,app_id为APPID,...
由Java Open Source Group构建的Spotify克隆 如何参与 加入我们的不和谐并自我介绍,以参与其中! 在找到您要处理的任务 如何贡献? 首先,谢谢您的贡献! :thumbs_up: 分叉此回购 在分支上进行更改,例如...
Kuaishou Marketing Sdk 内容列表 安装 composer require cloudycity...$client = new Client(ADVERTISE_ID, TOKEN); var_dump($client->advertiser->getInfo()); 参照示例 组件提供了一个Interface 这里以一个实现了I
id: process.env.APP_ID, secret: process.env.APP_SECRET, token: process.env.APP_TOKEN };var auth = require("node-weixin-auth");var config = require("node-weixin-config"); config.app....
这是一个使用express-open-id connect的简单用户用户身份验证应用程序
这是一个React Typescript客户端,它连接到Open Trivia API和Firebase数据库。 特征 显示带有随机排序的多项选择答案的问题。 根据正确答案保持跑步成绩。 将分数保存到Firebase数据库。 检索并显示最高得分手的...
Qihu360 ...auth = Qihu::Auth.new(id:'xxx', secret:'yyy') # 默认 redirect_uri 是 oob auth_url = auth.authorize_url() # 设置回调网址和验证界面模式 auth_url = auth.authorize_url(redirect_uri:'
be an open relay, as authentication is supported, but it is your responsibility to ensure the SMTP server is configured properly. There is nothing in the JavaMail API for tasks like configuring a ...
result=sqlite3_exec(db,"CREATE TABLE [MyTable] ([ID] INTEGER PRIMARY KEY NOT NULL,[MyText] TEXT NULL)",0,0,0); result=sqlite3_exec(db,"INSERT INTO MyTable (MyText) VALUES ('测试!')",0,0,0); result=...