您好,欢迎来到上海分类信息网
免费发信息

数字身份认证与授权:三种主流身份认证协议入门指南

2024-4-27 12:40:05发布4次查看ip:发布人:
无论是pc客户端还是移动端,第三方应用账户登录已经成为了标配,特别是在网络账户相互打通的前提下,不同平台对身份已经做到了互认。第三方账户在登录时,既要限制用户身份,只让有效注册的用户才能登录,也要根据注册用户的不同身份来控制能浏览的内容,这就需要认证和授权。
如今,区块链的出现,为去中心化数字身份提供了又一种全新的技术路径。面对如此之多的身份认证技术,我们需要重新审视当前技术的优势与不足,从而为区块链数字身份的发展提供更多有价值的参考。
什么是认证、授权、单点登录?
认证(authenticate)和授权(authorize),是两个容易混淆的概念。认证过程是证实某个用户是他所声明的那个人;授权则要决定一个身份是否能够访问网站资源。由此可见,应用需要先认证用户身份,然后依据用户身份进行授权,二者需要联合使用。
对于微信这样的应用,用户在登录后会得到该账户的身份凭证。如果其他第三方应用信任并接受微信的身份凭证,就可以直接使用该凭证通过第三方的认证而登录。至于登陆之后用户能有权限去做什么,则是要第三方应用根据自己的政策进行授权。有些网站在第一次使用微信账户登录时,需要绑定已用账户,就是因为虽然网站能够通过微信账户的身份认证,但是对于这样的账户没有对应的授权。
对于一个面向体系内部的服务环境,可能有邮箱系统、网上办公系统、财务系统等。如果每个系统都是独立的,那么公司的员工就需要每一个系统都分配一个账户,这样显然是低效且麻烦的。
目前,通用解决方案是单点登录(single sign-on,简称sso),用户在内网中只需登录一次,就可以访问所有相互信任的应用系统。单点登录和统一认证中主要的三个协议是openid、oauth、saml,被称为单点登录的“三驾马车”。
openid:去中心化认证的第三方登录经典模式
谈到单点登录和身份认证,就不得不谈openid。最典型的使用实例就是使用google账户登录其他应用,这一经典的协议模式,为其他厂商的第三方登录起到了标杆的作用,被广泛参考和使用。
openid是一个去中心化的数字身份识别框架,属于认证(authentication)协议。openid的创建基于这样一个概念:我们可以通过统一资源标识符(uri)来认证一个网站的唯一身份对于支持openid的网站。用户不需要记住像用户名和密码这样的传统验证标记。取而代之的是,他们只需要预先在一个作为openid身份提供者(identity provider, idp)的网站上注册。
任何网站都可以使用openid来作为用户登录的一种方式,也都可以作为openid的身份提供者,它既解决了问题而又不需要依赖于中心化的网站来确认数字身份。
openid的第一部分是身份验证,即如何通过 uri来认证用户身份。目前的网站都是依靠用户名和密码来登录认证,这就意味着大家在每个网站都需要注册用户名和密码,即便你使用的是同样的密码。如果使用openid,你的网站地址(uri)就是你的用户名,而你的密码安全的存储在一个openid服务网站上。
由于良好的通用性,openid正在被越来越多的大型互联网平台采用,比如作为身份提供者的aol和orange。它既可以应用于单点登录系统,也可以用于共享敏感数据时的身份认证。由于uri是整个网络世界的核心,它为基于uri的用户身份认证提供了广泛的、坚实的基础。
oauth:不触碰用户信息即可授权的“黑匣”协议
oauth协议为用户资源的授权提供了一个安全、开放且简易的标准。比起openid,oauth更像是一个授权(authorization)协议,其独特之处在于,它可以让第三方应用程序在不获取用户账号密码的情况下,获得属于用户的资源或是进行符合用户权限的操作。在这个过程中,令牌(token)成为核心节点。oauth2.0通过idp给第三方应用颁发令牌来实现以上功能,第三方应用则通过使用令牌向资源服务换取对应的资源。
oauth2.0是2006年提出来的新一代oauth版本,比起oauth1.x,它简化了认证交互过程,增加了认证机制,并对代码和可能出现的漏洞进行了优化与修改。oauth2.0协议主要有四个角色:用户、资源服务器、授权服务器、客户端。
那么这四个角色完成一个怎样的流程呢?举个例子,alice要外出一段时间,让自己的朋友bob代为照顾她的房子,所以alice把自己房子的钥匙交给了bob,而bob也就可以任意进入房子。这里的钥匙就是一种授权的体现——alice授权bob进入房子。这其中,房子所有者alice就是用户,bob是客户端,而门锁就是授权服务器,房子是资源服务器。
saml:兼顾认证与授权的身份信息共享通道
saml协议(security assertion markup language,安全性断言标记语言)是三者中时间最长的协议,最初版本制定于2001年,并于2005年修改。作为一种安全性断言标记语言,saml协议既可以用于认证也用于授权。
所谓的安全性断言,就是关于认证、授权以及用户属性(比如用户姓名、住址等信息)的声明集合,在saml中,这些断言以xml格式进行传输。saml的主要功能是在不同的安全域之间提供身份认证和授权信息交换,为用户跨平台进行身份认证和授权提供了方便,解决了多个系统共享认证、授权过程中的信息传递问题。
当要验证一个用户身份时,服务提供商(service provider,简称sp)会向idp发出saml认证请求,该请求中会以xml格式说明认证方式的设置,比如希望idp以何种方式验证用户。idp在认证通过用户身份之后,会返回saml请求响应,同样以xml格式返回断言表明用户身份和相关属性,此外saml安全性断言信息必须要使用数字签名以保证其完整性和不可抵赖性。sp接收到saml断言之后,验证其消息来源是否费受信任的idp,验证通过之后解析xml获得认证信息。
当前的身份认证技术在为用户提供便利服务的同时,其弊端也正在凸显,比如隐私泄露、身份欺诈窃取、身份无法跨境互认等。但我们相信,技术的进步总是出人意料,区块链的发展将为数字身份的发展注入更多活力,并有望推动其成为全球通用的可信基础设施。
(作者:idhub,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)
该用户其它信息

VIP推荐

上海分类信息网-上海免费发布信息-上海新闻网