小火箭安装包安卓能用吗
在这里,我们聚焦数据技术,分享方法论与实战。一线的项目经历,丰富的实践经验,真实的总结体会…滑到文末,可以看到我们的往期内容。
单点登录(Single Sign On,简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权,无需再次登录。
这种技术目前得到了广泛使用,它核心解决了一个问题:用户只需要登录一次,就可以访问所有相互信任的应用系统。
单点登录的实现方案一般包含:Cookies、Session同步、分布式Session方式、统一认证授权方式等。目前的大型网站通常采用分布式Session及第三方认证授权的方式。
基于Cookie的单点登录是最简单的单点登录实现方式,它使用Cookie作为媒介,存放用户凭证。
用户登录父应用之后,应用返回一个加密的Cookie,用户访问子应用的时候,携带上这个Cookie,授权应用解密Cookie并进行校验,校验通过则登录当前用户。
分布式Session实现单点登录原理是将用户认证信息保存于Session中,即以Session内存储的值为用户凭证,一般采用Cache中间件实现(如Redis)。用户再次登录时,应用服务端获取分布式Session来校验用户信息。如图所示:
一般情况下都是基于Redis实现Session共享,将Session存储于Redis上,然后将整个系统的全局Cookie Domain设置于顶级域名上,这样SessionID就能在各个子系统间共享。
用户第一次访问应用系统时,由于还未登录,被引导到认证系统中进行登录,认证系统接受用户名密码等安全信息,生成访问令牌(ticket)。用户通过ticket访问应用系统,应用系统接受到请求之后会访问认证系统检查ticket的合法性,如果检查通过,用户就可以在不用再次登录的情况下访问应用系统资源。
JWT (JSON Web Token)是一个开放标准(RFC7519),它是一个含签名并携带用户相关信息的加密串。页面请求校验登录接口时,请求头中携带JWT串到后端服务,后端通过签名加密串匹配校验,保证信息未被篡改,校验通过则认为是可靠的请求,将正常返回数据。
DataSimba(奇点云数据中台产品)结合JWT与分布式session,实现多域多空间单点登录。通过JWT生成和校验令牌,将刷新令牌存储在redis中,网关统一校验令牌,校验通过后将用户信息设置在请求头中,应用在拦截器中获取到用户信息后即可验证通过。
不同域中的DataSimba共用一套密钥并且实时同步用户信息,通过JWT生成和校验令牌,用户登录其中一个域后,前端获取JWT加密串并存储在Local Storage中,当用户切换到其他域时前端传入加密串,后端网关校验,由此实现免登录访问其他域资源,如下图所示:
OAuth 2.0 是一种认证授权机制,主要用来颁发令牌(token),OAuth的核心就是向第三方应用颁发令牌,OAuth2.0就是对应上文2.3(统一认证授权方式实现单点登录)中的认证系统。
OAuth在“客户端”与“服务端”之间,设置了一个授权层(Authorization Layer), “客户端”通过登录授权层获取令牌,通过令牌即可访问服务端资源。
OAuth2.0单点登录流程同上文介绍的“统一认证授权方式”流程一致:用户首次访问服务端资源时未登录,被引导到认证系统中进行登录授权,登录成功后获取令牌,用户获取令牌后可以通过令牌获取用户信息。客户端必须获取到用户授权,才能获取令牌。
通过OAuth2.0认证实现单点登录,为开发人员提供了一个通用的身份验证框架,提高开发人员的效率,解决了跨顶级域名单点登录问题。
日常办公经常会有多套系统,如果各个系统各自维护一套用户认证,用户需要记住多个用户名密码。系统各自管理用户认证的方式,不但会有重复建设的问题,用户体验也会差——经常会有用户忘记密码的情况。通过LDAP,我们可以管理企业级账号,认证用户名密码,实现统一账号登录,只需一个用户名密码就可以登录所有系统。
LDAP主要是用来实现统一身份认证的技术,目前市面上大部分的开源系统都支持LDAP,因此通过LDAP能够统一管理和维护公司的账号,极大地提高了运维的工作效率。
在实际应用中,奇点云的数据中台产品DataSimba也通过单点登录实现了多域多空间的访问。用户登录DataSimba某一个域后,无需再次登录,即可方便地切换到其他域。
以一个国内大型饮料集团客户为例,DataSimba使用JWT+Session共享方式实现跨域单点登录,通过OAuth2.0对接其统一认证平台,实现统一账号单点登录。
实现单点登录的技术方案很多,但没有哪种方案可以完美解决所有问题小火箭安装包安卓能用吗。我们需要针对具体应用场景来制定最优解决方案。


