> 文章列表 > 跨平台跨端的登录流程及其安全设计

跨平台跨端的登录流程及其安全设计

跨平台跨端的登录流程及其安全设计

平台跨端的登录流程及其安全设计

目录

跨平台跨端的登录流程及其安全设计

一、登录流程

1.1、登录流程时序图

1.2、三方App 登录

1.3、请求的路由守卫 

二、注册流程

2.1、注册流程时序图

2.2、多因素认证

2.3、自动跳转登录页面

三、涉及的技术与安全

3.1、用户许可授权

3.2、原生App权限

3.3、私域权限

3.4、加密与解密

3.5、前端相关的主要部分

3.6、后端相关的主要部分

3.7、安全相关的主要部分


一、登录流程

        为统一多端的路由守卫的模式(App客户端、浏览器web客户端(含移动端)、webview客户端等),保证系统及应用的安全,本文旨在寻求一种通用的、标准化的方法,可参考大厂的做法,比如微信小程序-登录流程时序:

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

1.1、登录流程时序图

说明:

         ⓪、可扩展为PaaS的后端服务:你的应用服务,可“剥离”为“业务API服务”和“平台API服务”,即上述“开发者服务”和“可扩展为PaaS的后端服务”。“平台API服务”,可以为第三方的“独立软件开发商ISV”提供接入服务,由它们代为“最终用户开发”,或扩展你的“业务API服务”的功能;同时,“平台API服务”,还可以作为“企业客户”的管理后端,统一管理为企业客制化的appid和appkey,每个企业都有一个唯一的“appid”标识。而且,“业务API服务”和“平台API服务”可以是“分布式架构”,它们之间,可以是1对1的关系、也可以是多对一的关系、还可以是”支持负载均衡“的多对多的关系。

         ①、“通用签名”和“一次性登录凭证code”:“通用签名”,可以被客制化为一个“可扩展为PaaS的后端服务”所提供的签名校验服务,它可以是一个同时具备“PreventDoubleSubmission防止双重提交功能”的时间戳的差值,这个差值极短比如0.03毫秒,即我们通常所说的“雪花算法ID”,可以有效防止一开始就被”ddos“攻击。“一次性登录凭证code”,相当于一个“一次性访问令牌”,下次再请求,该令牌就会失效。

         ②、AK换取SK:几乎是,所有大厂的平台服务,所采用的方式,即:拿“用户注册平台服务”时,所产生的AppID对象,“appid”及其键值"appkey",携带临时令牌code,生成用户当前“会话”所使用的session_ID对象,“session_id”及其键值"session_key"。其中,session_key,会话密钥,是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到“多端应用”,也不应该对外提供这个密钥。

         ③、自定义登录态loginStatus:将session_key和openid按照客制化的特定算法进行关联,并存取到“开发服务器”持久化,可以存取到后端服务的数据库中,也可以持久化到开发服务器的redis键值对中,便于后期查询“签名密钥”进行“签名的验证”。

         ④、缓存自定义登录态loginStatus——Storage:将loginStatus缓存到“本地”,“本地”,对移动端App而言,即使其应用的“沙盒”路径下的loginStatus文件;对PC端的App而言,可以是操作系统的用户数据目录(比如MSWindows下的C:\\Users\\Administrator\\AppData\\Roaming\\yourApp),也可以是该应用根下的某个专门存取的路径下的“加密”的loginStatus文件,读取时需要“解密”。对基于“浏览器或webview”的应用(比如html5网站、微信/支付宝/百度等的小程序),直接将其缓存到“Storage”下:

1.2、三方App 登录

        若你的服务,是PaaS的扩展平台服务,在你的App的基础之上,为第三方开发者提供API接入服务,可在上述流程开始,增设1个OAuth2.0的流程;首先征得”用户的同意“,三方服务,才可生效。

1.3、请求的路由守卫 

        对基于浏览器(含嵌入式浏览器)的客户端应用而言,一切,皆请求和响应,无论多页应用还是单页应用,均需要守卫上述1.1中的”自定义登录态“,任何对目标服务的请求,没有自定义登录态或自定义登录态失效,均需”重新进行登录“。

        对原生App(含多端)而言,也同样遵循“路由守卫”法则。

二、注册流程

2.1、注册流程时序图

        如上,关键是要对标1.1、登录流程中的②、AK换取SK”。

2.2、多因素认证

        OAuth2.0第三方认证,可以是权威大厂的手机验证码、可以是公众广泛认同的第三方“互联登录”(比如“微信登录”、“QQ登录”、“支付宝登录”、“百度登录”等),也可以是它们之间的组合。

        对于“企业级”应用及“平台级”的应用,可能还会涉及“用户工商信息”的提交流程与审核流程(本案,略)。

        认证的目的:验证,请求者,是人,而非“机器”代码。

2.3、自动跳转登录页面

        进入“登录流程”。

三、涉及的技术与安全

3.1、用户许可授权

        本案,整个生命周期,都应严格按照中国“公安三所等保认证”的要求进行设计、架构和实施,以免后续不停返工。

        应当按照工信部要求, 凡是涉及用户隐私的环节,都主动出示“用户隐私保护协议”,并拉起“用户授权”的平台界面,供用户阅读与授权同意,无论html前端涉及的Cookies,还是移动App涉及的用户设备能力及其三方sdk引用,抑或是微信等私域应用所涉及的用户隐私,均需征得用户授权。

3.2、原生App权限

        ▪ Android客户端平台:AndroidManifest.xml及其相关权限代码

        ▪ Ios及MacOS客户端平台:info.plist.xml及其相关权限代码

        ▪ MSWindows客户端平台:UAC及ACL相关的权限代码

3.3、私域权限

        ▪ 涉及微信小程序等应用内的权限请求

        ▪ 涉及支付包小程序等应用内的权限请求

        ▪ 涉及百度小程序等应用内的权限请求 

3.4、加密与解密

        ▪ 对称加密AES

        ▪ 非对称加密RSA

        ▪ 国密:OpenSSL与SM2、SM4

3.5、前端相关的主要部分

        ▪ 网络三剑客:Html5 + Css3 + ES5/ES6(及其TypeScript)

        ▪ Web APIs、

        ▪ HTTP协议

        ▪ 其它主要的web开发技术

        ▪ 工程化与模块化:webpack(3/5后)、vite、Node.js相关部分

        ▪ 主要的三方框架:Vue(2/3)、React(新React)、Node.js相关部分

3.6、后端相关的主要部分

        ▪ Node.js(express)和Egg

        ▪ 编译型开发工具及其语言:C和C++、 Delphi;Java等

        ▪ 数据库:MySql、MS Sql Server、Oracle等;IndexedDB、Redis

3.7、安全相关的主要部分

        ▪ 网络协议和操作系统的安全

               ▪ ddos分布式拒绝服务攻击-Distributed Denial of Service

               ▪ 其它(太多太细,略)

        ▪ web安全-最常涉及的内容

               ▪ 同源策略与cors跨域资源共享

               ▪ CSP跨域安全策略

               ▪ 缓存相关的安全:强制缓存与协商缓存;Cache Storage、Session Storage、Cookies、Loacal Storage

               ▪ Worker专用线程、Service Worker服务线程,及其安全

               ▪ SSL、TLS及Https

               ▪ JWT(Json Web Token)

               ▪ OAuth2.0标准

               ▪ CSRF跨站请求伪造攻击与反攻击-Cross-site request forgery

                              利用站点对用户的信任骗取user info

               ▪ XSS跨站脚本攻击与反攻击-Cross Site Scripting

                              利用用户对站点的信任骗取user info

               ▪ 登录和认证-服务端(以上的技术融合,做好它是一切的前提

               ▪ 登录和认证-客户端(以上的技术融合,做好它是一切的前提

               ▪ 整理与归纳-涉及浏览器相关的安全领域

               ▪ 整理与归纳-涉及原生App相关的安全领域

               ▪ 整理与归纳-涉及私域应用相关的安全领域

喜欢的,就收藏并点个赞,鼓励我继续技术的原创写作及经验分享:

《大厂后台管理passportal鉴权登录的通行做法-之腾讯云研究》

需要改进的过往组件:《App账号注册登录设计》