当前位置: 首页 > news >正文

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

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

目录

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

一、登录流程

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账号注册登录设计》

相关文章:

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

跨平台跨端的登录流程及其安全设计 目录 跨平台跨端的登录流程及其安全设计 一、登录流程 1.1、登录流程时序图 1.2、三方App 登录 1.3、请求的路由守卫 二、注册流程 2.1、注册流程时序图 2.2、多因素认证 2.3、自动跳转登录页面 三、涉及的技术与安全 3.1、用户…...

如何在Java中创建临时文件?

在Java程序中,有时需要创建临时文件来暂存数据或者执行某些操作。Java提供了许多方式来创建临时文件。在本教程中,我们将介绍如何使用Java标准库来创建临时文件。 一、使用File.createTempFile()方法 Java标准库中的File类提供了createTempFile()方法来…...

Vue表单基本操作-收集表单数据

收集表单数据 使用vue中的v-model收集表单里面的数据,不同的表单元素配合v-model会有不同的写法和技巧 本次的表单元素包括:文本框,单选,多选,下拉框,文本域 编写表单元素 首先编写表单元素,…...

Android 一个获取网址时间的Demo

Android 一个获取网址时间的Demo 文章目录 Android 一个获取网址时间的Demo通过一个网址获取时间的代码关于Android NTP 时间Android 同步时间代码 前段时间有个客户想用局域网同步Android 设备的时间,开发后把这个demo分享一下。 效果: 这里也获取了阿…...

ijkplayer解码流程源码解读

ijkplayer是一款基于ffmpeg的在移动端比较流行的开源播放器。FFmpeg是一款用于多媒体处理、音视频编解码的自由软件工程,采用LGPL或GPL许可证。 要想理解ijkplayer源码,首先得知道视频播放器的基本原理。 视频播放器播放一个互联网上的视频文件&#xf…...

2023年值得关注的3个品牌趋势,帮你弯道超车

2023年,大环境开放,压抑三年的消费蓄势待发,品牌如何唤醒消费者的、热情成了重中之重的大事。 春风和煦,万物生长。又到了各类品牌、各位营销人踌躇满志、斗志昂扬的时候了,浅析一下2023品牌宣传趋势,抓住…...

软考-高级项目管理(二十)

第20章 高级项目管理 (P572考0-2分选择 性价比很低) 在项目集管理中涉及的相关角色主要包括: 项目集发起人、项目集指导委员会、项目集经理、其他影响项目集的干系人 1.项目集发起人 项目集发起人和收益人是负责承诺将组织的资源应用于项目集,并致力于使项目集取得…...

RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术

目录标题 1. 引言1.1 流媒体传输技术的重要性1.2 为什么选择RTMP协议1.3 RTMP协议的发展与应用 2. RTMP协议基础2.1 RTMP协议简介2.2 RTMP协议与其他流媒体协议的比较2.3 RTMP协议的组成与工作原理 3. RTMP协议详解3.1 RTMP数据单元(Message)3.2 RTMP数据…...

2023mathorcup数学建模ABCD思路分析

更多思路分析,请看文末 A题:量子计算机在信用评分卡组合优化中的应用 题目提到了信用评分卡的组合优化,这是一个经典的优化问题。在这个问题中,需要通过不同的组合方式来选择不同的阈值,以达到最大化贷款利息收入和最…...

普通家庭,千万不要投入大量时间和金钱,让孩子去苦学和培养AI机器人编程了...

普通家庭,千万不要投入大量时间和金钱,让孩子去苦学和培养一些看似高端,实际却用处不大的兴趣爱好课程了,比如学钢琴、学音乐、学AI机器人编程这些兴趣爱好课程。 这些对孩子的成长其实意义并不大,尤其是AI机器人编程。…...

C++学习(day2)

文章目录 四. C中的字符串4.1 C支持两种风格的字符串4.2 string类型的赋值和初始化4.3 C风格和C风格的字符串互换4.4 string类中三个重要成员函数4.5 string类型的比较4.6 string类型的成员访问 at()6.8 string类型数据的输入 五、bool类型六、引用(reference&#…...

软考 - IP地址与网络划分

一.IP组成 1.1 首个八位字节规则 1.2 地址掩码 IP地址掩码 标准地址掩码 A类:255.0.0.0 前1个字节是网络号 后3个字节是主机号 B类:255.255.0.0 前2个字节是网络号 后2个字节是主机号 C类;255.255.255.0 前3个字节是网络号 后1个字节是主机号…...

Apifox软件的基础使用方式

Apifox软件的基础使用方式 简单方便的用途 该工具是接口在线调试工具,这里我给到连接供大家去官网下载,我个人觉得是比较于postman工具好用,提供的语言操作是中文版本的便于操作 下载和安装 https://apifox.com/?utm_sourcebaidu&ut…...

【Tensorflow】模型如何加载HDF文件数据集?

如果每个样本都被保存为一个单独的 HDF5 文件,可以使用 tf.data.Dataset.list_files 函数来创建一个文件名数据集,然后使用 tf.data.Dataset.interleave 函数来并行读取多个文件。 下面的示例展示了如何从多个 HDF5 文件中读取数据并创建一个 tf.data.D…...

校招又临近了,怎么在面试中应对设计模式相关问题呢?

夏天开始了,那么夏天结束时的毕业季也不远了。毕业是个伤感、期待而又略带残酷的时节,就像蜜桃无论成熟与否都会在这个时间被采摘,如果毫无准备就踏入社会,就会……马上变成低级社畜。所以说还是要早点为了毕业找工作做点准备&…...

padans关于数据处理的杂谈

情况:业务数据基本字段会有如下: Index([时间, 地区, 产品, 字段, 数值], dtypeobject)这样就会引发一个经典“三角不可能定理”,如何同时简约展现分时序、分产品、分字段数据。)一般来说, 1、时序为作为单独的分类&…...

神经网络的理解

文章目录 概念得分函数损失函数神经网络结构非线性激活函数神经网络运行过程神经网络能够做的事情概念 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并…...

夏驰和徐策带你从零开始学数据结构——哈希表

哈希表的概念: 哈希表是一种常用的数据结构,它可以在 O(1) 的时间复杂度内执行插入、查找和删除操作。哈希表的核心思想是使用哈希函数将键值对映射到数组中的一个位置上,从而实现快速的访问和修改。 哈希表由两个主要部分组成:…...

linux实现网络程序

1️⃣ 在linux下,通过套接字实现服务器和客户端的通信。 2️⃣ 实现单线程、多线程通信。或者实现线程池来通信。 3️⃣ 优化通信,增加守护进程。 有情提醒,类里面默认的函数是内联。内联函数在调用的地方展开,没有函数地址&…...

FreeRTOS 队列(二)

文章目录 一、向队列发送消息1. 函数原型(1)函数 xQueueOverwrite()(2)函数 xQueueGenericSend()(3)函数 xQueueSendFromISR()、xQueueSendToBackFromISR()、xQueueSendToFrontFromISR()(4&…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...