互联网出现的早期,所有的网络请求都是匿名的,没有身份信息,且网络通信不够普及,普通人也无法随意的接入互联网。
这个时期的身份往往是通过IP地址作为认证,比如1.2.3.4表示A单位,5.6.7.8表示B单位。
随着网络技术的发展,普通用户也可以接入互联网了,且随着网络基建设施(如DNS,邮件服务等)的完善,网络身份认证进入了一个新的阶段。
此时的互联网服务还不能称之为公共的基础设施,而是专业性比较强的沟通方式。
此时网络服务可能因自己的业务需求,需要用户上传身份证、真实姓名、手机号等信息作为实名身份凭证,网络服务再依赖于国家身份证信息库对用户提交的实名身份信息进行验证。而此时的身份认证只能说解决了一些数据归属的权限控制问题。
与其说是身份认证,不如说只是一堆账号/密码。
互联网正式进入了百家齐放的时代,随之而来的就是,用户可能需要记忆大量的账号密码。
此时,我们往往称之为Web1.0时代,PGC(Professionally-generatedContent)热火朝天的时代。这个时代真正出现了上网的概念。
随着大量的互联网应用的出现,类似一些企业级服务往往需要对自家的服务进行统一身份认证,此时需要一种统一身份认证的解决方案。
而国内开始进入OAuth2.0时代,应该是微博开始在国内爆火的时代。
随着新浪微博、腾讯微博等服务的大火,国内开始进入了Web2.0的时代,也同时进入了UGC(User-GeneratedContent)的时代。随着大量SNS服务的出现,互联网出现了用户身份的概念,也同时慢慢开始了上网到在网的转变。此时,OAuth2.0才广泛的在国内铺开。
至今,OAuth2.0服务被大量应用到身份认证服务中,不论是自家的系统还是第三方的服务,都可以使用这个方案来对用户身份进行有限的共享,达到敏感数据统一管理,仅开放公开的身份信息(如OpenID、昵称等)给到第三方服务。
但此时仍然存在账号/密码记忆、敏感信息泄露(身份证/姓名)等问题。
这是中国大陆首次以法律形式明确网络实名制。
无规矩不成方圆。国家网络实名制维护了一个更加健康的网络环境,但同时也给用户带来一些问题。
大量的实名认证要求,用户上传身份证证件的入口增多,用户体验糟糕且用户身份证泄露概率变大。
“国家网络身份认证公共服务”来了,可以说解决了上述这些根本的问题。
我们先来聊聊上面提到的一些问题:
如果某大厂突然停止了服务,那用户将无法访问大量的服务。那么,如果出现了个国家级的OAuth2.0服务呢?
国家网络身份认证公共服务:“你干脆报我名字得了!”
如果,出现了个国家级的OAuth2.0服务,我们也不需要向这个服务上传身份证(国字头的服务,本身就知道我们的身份证),然后由这个服务来对其他的服务提供认证信息,那是不是就彻底解决掉这个敏感信息泄露的问题呢?
国家网络身份认证公共服务:“你干脆继续报我名字得了!”
都是国字头的服务了,实名制上网的问题已经彻底解决了。
接下来我们将从架构的角度来构思这个服务,当然实际的服务架构可能跟我们的猜想和设计不一致。
每个人的身份证可以作为用户的唯一标识,用户可以基于身份证创建一个账号,然后设置一个口令作为密码。通过OAuth2.0标准将用户信息公开,比如提供网号、当前是否成年(非出生日期)、性别、籍贯(非详细地址)等。流程图如下:
sequenceDiagram居民->>派出所:办理出生证明派出所-->>公安部:登记出生证明公安部-->>公安部:生成身份证号公安部-->>公安部:制作身份证公安部--)派出所:邮寄身份证派出所-)居民:办理完成此时,用户拿到了身份证。
按目前看到的国家网络身份认证公共服务的设计,我们可以得到下面的图:
以下国家网络身份认证中心App将简称为APP,公安部身份数据库将简称为公安数据。
sequenceDiagram居民->>APP:打开AppAPP-->>APP:NFC扫描身份证得到身份证**加密ID**APP-->>APP:设置口令、绑定手机号APP-->>公安数据:上传加密ID/手机号/口令公安数据-->>公安数据:解密身份证公安数据-->>公安数据:为用户初始化公开身份,如**网号**公安数据--)APP:返回网络公开身份APP-)居民:开通成功这里我们能看到,App使用了NFC扫描获取身份证里的加密信息,保证了用户身份不被伪造。(如果没有NFC,可以去政务大厅等官方机构去开通),即使身份证被别人使用开通了,App上也能看到并远程注销身份。
目前很多应用都还没有接入,下面的图只是产品架构的设计思路。
这个问题得等上面的问题解决了,可能加上一些国家的推广和要求,应用侧也会陆陆续续的支持使用这种方式进行身份认证了。
尽管减少了用户向第三方服务提供敏感信息的机会,但集中化的身份认证服务本身也可能成为黑客攻击的目标。面对数亿用户的日常使用,系统的稳定性和可扩展性是一个重要考量因素。
随着全球化的发展,需要考虑与其他国家和地区身份认证体系的互操作性。