OpenID 说明
来源:互联网 发布:阿里云虚拟主机 mysql 编辑:程序博客网 时间:2024/04/29 23:01
OpenID 是一种去中心化的身份认证系统,建置简便,甚至不需要一个帐号管理中心伺服器。在OpenID 中的使用案例中,参与者分成三种,即:
- End-user - 最终使用者,即服务的一般用户,每一个用户都使用一个URL 来代表自己。
- Identity provider - 身份提供者。身份登录与验证的服务提供者。
- Relying party - 委托者,向Identity provider 请求验证身份的参与者。通常是其他的服务提供者。
除了 身份的辩证外,OpenID也规范了委托者可以透过 OpenID Simple Registration Extension 1.0向身份提供者查询使用者的基本资讯。Simple Registration Extension指定了部份栏位的用途,例如:
- openid.sreg.nickname: Any UTF-8 string that the End User wants to use as a nickname.
- openid.sreg.email: The email address of the End User as specified in section 3.4.1 of [RFC2822] (Resnick, P., “Internet Message Format,” .).
- openid.sreg.fullname: UTF-8 string free text representation of the End User's full name.
- openid.sreg.language: End User's preferred language as specified by ISO639.
更多的栏位用途请参考 OpenID Simple Registration Extension 1.0。
OpenID 的三方交涉概念
OpenID 协定规范了代表最终使用者的agent (例如Web浏览器)与身份提供者和委托者交涉的内容, agent 藉由Cookie 保存认证状态。凭此状态,agent 可以存取其他的服务资源,而无需使用者再次输入密码。
例如mydomain.com 是身份提供者(Identity provider)。rock 在mydomain.com 登录了他的身份,则rock 可以用http://mydomain.com/rock 这个URL 代表他。接着rock 想要使用Gmail 服务,就以http://mydomain.com/rock 签入Gmail ,此时Gmail 就是委托者(Relying party) 。Gmail 会从代表rock 的URL 中,找出这个身份的提供者是mydomain.com ,接着就依OpenID 规范的交涉协定验证rock 是否已经登入了。
如果rock 事先已经在mydomain.com 完成登入动作,那么Gmail 就会得到rock 已登入的回应,rock 就不需要再次输入帐号和密码。反之若rock 尚未在任何地方登入,那么Gmail 的页面就要导向到mydomain.com 的登入页面去,让rock 完成登入动作。将使用者导向到登入页面的动作,是OpenID 协定的交涉动作之一。
OpenID 实作品
基本上,委托者是根据代表身份的URL 判断身份提供者是谁。例如URL 是http://mydomain.com/rock , 则身份提供者就是mydomain.com 。委托者可以直接根据ID 找到身份提供者要求验证。因此,在一般情形下,OpenID 系统不需要所谓的身份认证中心伺服器。甚至于,一个最终使用者可以自己当自己的身份提供者。
例如rock 架设了个人主机rock.idv.tw ,启动了Identity provider 的服务。那么rock 就可以用http://rock.idv.tw/ 代表他自己。当有人(任何人)以http://rock.idv.tw/ 这个URL 向任何一个支援OpenID 的网路伺服要求服务时,那些服务者就要向rock.idv.tw 验证身份。
Niemira的phpMyID用了1800行的PHP code实作了一个单一帐号的身份提供者软体。使用者仅须在自己的主机上安装此程式,就可以做自己的身份提供者。
在 Yahoo! OpenID Usability Research文章中,补充了许多关于使用者体验改善的事项,可以让软体系统支援OpenID功能时,对使用者更为友善。
OpenID 已经有相当多的实作品,包含Libraries/API 在内。这些Libraries 可以提供编程人员在软体中实现Identity provider 、Relying party 功能。
OpenID Foundation提供了一份Libraries清单:Libraries。
- dyuproject - java REST framework, openid 2.0 relying party, oauth consumer and service provider, JSON IOC.
- JOID - JOID lets you create both OpenID 2.0 relying parties and identity providers.
- WSO2 Identity Server - WSO2 Identity Server is an open source identity and entitlement management server having Information Cards, OpenID and XACML support.
References
- Wiki:OpenID
- OpenID Foundation
- Run your own identity server
- OpenID Enabled!
- Google is Now an OpenID Provider
- Yahoo! OpenID Usability Research.
- OpenID for Google Accounts
- OpenID 说明
- OpenID
- OpenID
- OpenID
- OpenID
- OpenID
- OPENid
- OpenID
- OpenID
- OpenID简介
- OpenID简介
- OpenID 是什么?
- OpenID简介
- OpenID 是什么?
- OpenID是什么?
- OpenID使用手册
- OPENID!爽
- OpenID简介
- 通过网络访问adb
- error: Error retrieving parent for item: No resource found that matches the given name 'Widget.AppCo
- Android 数据库升级中数据保持和导入已有数据库
- C# UDP编程
- cocos2d-x 3.0正式版及android环境搭建详细教程
- OpenID 说明
- javascript基础知识
- Linux查看程序端口占用情况
- ibatis配置limit
- 使用CocoaPods来做iOS程序的包依赖管理
- 卡尔坐标系统
- 点击GridView时,出现背景色,setSelector的使用
- 他需要加班了,因为他的编程能力非常差。
- ACM-BFS之Open the Lock——hdu1195