当咱们要使用一个网站的功能时,通常都须要注册想用的帐号。如今的互联网应用不少,一段时间以后你会发现你注册了一堆帐号密码,根本记不住。html
你可能会想到全部的网站都用同一套用户名和密码,这样虽然能解决帐号管理的问题,但也加大了帐号密码泄露的风险。浏览器
虽然,如今的网站有提供短信验证码登陆技术,可是今天咱们要聊的是一个比较“古老”的技术——OpenID,看看以前的技术是怎么解决密码太多不便于管理的问题的。安全
写这篇文章的目的更多的是兴趣使然,由于实践过程当中不太可能会单纯的使用OpenID登陆,国内也几乎没见到支持OpenId的网站,至少主流的大厂没支持。可是我我的以为,用不到并不表明你必定不须要知道,了解技术发展的历史,不只能够给咱们借鉴,并且能提高本身的技术底蕴。(哈哈,有点装X~~)框架
在正式介绍OpenID以前,我再啰嗦几个基础概念。ide
Authentication: 身份鉴别,简称认证,简单讲就是怎么鉴定你就是某我的;性能
Authorization Server/Identity Provider:把负责 认证的服务 称为 AuthorizationServer 或者 IdentityProvider,简称IDP;网站
Authorisation: 资源访问,简称受权,简单讲就是给某我的赋予某些权限;ui
Service Provider/Resource Server:把负责提供资源(API调用)的服务称为 ResourceServer 或者 ServiceProvider,简称 SP.net
OpenID相关的几个概念设计
OpenID 是由LiveJournal和SixApart开发的一套身份验证系统,是一个以用户为中心的数字身份识别框架,它具备开放、分散、自由等特性。
OpenID 的建立基于这样一个概念:咱们能够经过 URI (又叫 URL 或网站地址)来认证一个网站的惟一身份,同理,咱们也能够经过这种方式来做为用户的身份认证。它不基于某一应用网站的注册程序,并且不限制于单一网站的登陆使用。OpenID账号能够在任何OpenID应用网站使用,从而避免了屡次注册、填写身份资料的繁琐过程。简单言之,OpenID就是一套以用户为中心的分散式身份验证系统,用户只须要注册获取OpenID以后,就能够凭借此OpenID账号在多个网站之间自由登陆使用,而不须要每上一个网站都须要注册账号。
假设你已经拥有一个在A网站(A网站就是OP角色)注册得到的OpenID账号,B网站(B网站就是RP角色)支持OpenID账号登陆使用,并且你从未登陆过。此时你在B网站的相应登陆界面输入你的OpenID账号进行登陆的时候,浏览器会自动转向A网站的某个页面进行身份验证。这时你只要输入你在A网站注册时候提供的密码登陆A网站,对B网站进行验证管理(永久容许、只容许一次或者不容许)后,页面又会自动转到B网站。若是你选择了容许,那就会登陆进入B网站。这个时候你就能够以你的OpenID账户身份实现B网站的全部功能。
上面描述了B网站使用A网站提供的OpenID进行登陆,你也可使用这个OpenId登陆其余支持OpenID的网站。
OpenID的获取流程
认证流程
对用户
简化注册登陆流程:必定程度上避免了重复注册、填写身份资料的繁琐过程,不须要注册邮件确认,登陆更快捷。
一处注册,到处通行:免去记忆大量帐号的麻烦,一个OpenID就在任何支持OpenID的网站自由登陆。
减小密码泄露风险:频繁登陆各类网站,容易被垃圾网站暗地里收集密码和资料,或者冒充用户身份发送垃圾信息。
用户拥有帐号信息控制权:根据对网站的信任程度,用户能够清楚的控制哪些profile信息能够被共享,例如姓名、地址、电话号码等。
对网站
共享用户资源:给全部支持 OpenID 的网站带来了价值。
已经有至关数量的高端注册用户能够直接使用,没必要从零开始;
能够不负担本身创建会员系统或登陆功能所须要的开发成本、机器、带宽、安全费用;
用户数据是安全的,用户数据不统一存储,用户能够任意选择、更换存储的server。没有组织,没有任何一个地方能够作root,没有任何一个机构或者我的可以从这里面获利。
任何人均可以创建一个网站提供OpenID验证服务,而网站性能良莠不齐,致使OpenID的验证过程不是很稳定。
若是提供OpenID验证服务的网站忽然关闭的话,可能会致使大量用户没法使用多个网站的服务。
目前几乎全部支持OpenID的网站都很谨慎地将其作为一种可供选择的辅助登陆方法,这会在很大程度上阻碍OpenID的发展。
目前支持OpenID的网站还很少,其独特的使用方法并不被多数用户所熟悉。
密码安全度下降,只要OpenID的密码被泄露,基本上全部的网站都被泄露。这与"一处注册,处处使用"造成对应,即"一处泄露,处处泄露"。
OpenID并不是真正的Open,不少网站表面上支持OpenID,实际上,仍是不断的骚扰OpenID用户,在他们网站上注册账号,在背后偷偷的沉淀OpenID用户。因此,就目前来讲,OpenID对于集团内各子公司用户体系的打通仍是可行的,对于与外部公司是否使用OpenID还得谨慎点。
原始的OpenID,也就是OpenID 1.0,它并非真正的商业应用,但这个协议让行业领导者思考什么是可能的。
OpenID 2.0设计更为完善,提供良好的安全性保证。然而,其自身存在一些设计上的局限性,最致命的是其中依赖方必须是网页,但不能是本机应用程序;此外它还要依赖XML,这些都会致使一些应用问题。
OIDC,OpenID Connect是OpenID的第三代技术。OpenID Connect从SAML和OpenID 1.0/2.0中作了大量借鉴。OIDC不只支持用户认证,还支持用户受权。
后面的文章中会介绍OIDC的相关内容。
待更新...