周志明的软件架构课
周志明
博士,远光软件研究院院长,《深入理解 Java 虚拟机》《凤凰架构》等书作者
54203 人已学习
免费领取
课程目录
已完结/共 74 讲
架构师的视角 (24讲)
周志明的软件架构课
15
15
1.0x
00:00/00:00
登录|注册

23 | 认证:系统如何正确分辨操作用户的真实身份?

你好,我是周志明。
我们应该都很清楚,对于软件研发来说,即使只限定在“软件架构设计”这个语境下,系统安全仍然是一个很大的话题。它不仅包括“防御系统被黑客攻击”这样狭隘的安全,还包括一些与管理、运维、审计等领域主导的相关安全性问题,比如说安全备份与恢复、安全审计、防治病毒,等等。
不过在这门课程里,我们的关注重点并不会放在以上这些内容上,我们所谈论的软件架构安全,主要包括(但不限于)以下这些问题的具体解决方案:
认证(Authentication):系统如何正确分辨出操作用户的真实身份?
授权( Authorization):系统如何控制一个用户该看到哪些数据、能操作哪些功能?
凭证(Credentials):系统如何保证它与用户之间的承诺是双方当时真实意图的体现,是准确、完整且不可抵赖的?
保密(Confidentiality):系统如何保证敏感数据无法被包括系统管理员在内的内外部人员所窃取、滥用?
传输(Transport Security):系统如何保证通过网络传输的信息无法被第三方窃听、篡改和冒充?
验证(Verification):系统如何确保提交到每项服务中的数据是合乎规则的,不会对系统稳定性、数据一致性、正确性产生风险?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了系统认证的基本概念和具体实现,特别介绍了WebAuthn规范。首先强调了认证、授权和凭证对系统安全设计的重要性,详细讨论了基于通讯协议的HTTP认证和基于通讯内容的Web认证的实现方式。文章还介绍了WebAuthn规范,采用非对称加密的公钥、私钥替代传统密码,提高了认证的安全性。WebAuthn解决了传统密码在网络传输上的风险,并为登录过程带来了便捷性。总的来说,本文对系统认证的基本概念和具体实现进行了深入探讨,特别是介绍了WebAuthn规范,为读者提供了全面的认证技术知识和发展趋势。文章还介绍了Java技术体系中的安全认证实现,以及对比了两个私有的安全框架Shiro和Spring Security的特点。文章内容丰富,对软件架构设计和系统安全感兴趣的读者具有一定的参考价值。

该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • 储正阳
    如果我有多个设备,WebAuthn怎么做到多个设备上登录的是同一个用户呢?

    作者回复: 这个单纯WebAuthn是做不到的,它不是WebAuthn要考虑的问题。能否实现要看使用WebAuthn的网站,是否允许将多个WebAuthn设备的公钥绑定到同一个用户上。

    2021-01-28
    11
  • 刘智恒
    我们一般在实现一个最简单的认证服务的时候是部分服务需要认证,认证页面创建表单填写用户名密码,然后通过HTTP回复中的200/403来确定是否登陆成功。 我想确认一下,这种形式的简单认证是不是由HTTP认证(状态码,Bearer token)和Web认证(表单设计,某些服务可以不需要认证)结合实现的? 如果是的话,纯粹的HTTP认证在客户端是什么形式的?用户名密码的输入不在表单中表示吗? 如果不是的话,Web认证和HTTP认证的边界我可能还是不太理解。

    作者回复: HTTP认证是不会关心认证内容的表现形式的,因为HTTP并不能确保它传输的是何种内容信息,连是不是HTML都说不好,就更加没法保证用HTML画的表带中用户名、密码该不该有,该长啥样了。 说白了,HTTP认证只要求客户端发给它的认证Header中存在某些信息,它根据这些信息去认证,而不关心客户端是如何产生这些信息的,客户端是通过HTML表单输的密码算出来的也好,通过WebAuthn的生物识别或者外部识别装置得出来的也罢,对它都一样。

    2021-01-10
    11
  • zhanyd
    我们公司的很多系统只用了简单的用户名和密码验证,感觉像是在裸奔,后来加上了token,算是穿上了一条小内裤。。。

    作者回复: 后面有几节会围绕着“token”来展开,到时候联系实际系统,看看会否有新的收获

    2021-01-08
    2
    5
  • neohope
    补充一下认证方式,一般是由三大类方式及其组合实现: What you are: 比如人的生理特征(指纹、面部识别、虹膜、声纹、DNA等) What you know: 古代机关开启方式、密码、动态指令、预设安全问题、最近和谁聊天、最近几次变动的密码、最近几次登录地址等 What you have: 身份证,医保卡,银行U盾牌,手机短信/电话语音发送验证码 但有一些就不太会好判断归属: 1、公安局开的身份证明或CA颁发给机构的证书,应该是“你有啥”,但很多时候直接被用于“你是谁” 2、图形动态验证码,用于判断“你是人不是机器”,这个算是“你是谁”的简单版本?
    2021-04-03
    6
  • Free
    最近公司的登录页面实现了webAuthn,解决多个设备同一用户的思路是:绑定多个设备到该用户原有的登录账户中,也就是说还是没有抛弃登录密码那一套,具体过程如下: ①用户使用用户名和密码登录系统,给用户提供绑定页面,该绑定页面就是“注册”流程,注册得到最主要的信息是公钥和唯一的ID(rawid); ②后台校验challenge等信息,如果没有问题则将注册信息保存在数据库中(一个用户可以绑定多个设备,表的主键是用户ID和注册时返回的rawid)。 ③隐藏登录页面的密码,录完用户名后从后台取到该用户的所有已绑定设备,即执行”登录”流程。这个流程会得到签名。 ④后台校验(校验challenge,签名中的信息,校验项比较多,是通过调用框架实现的),如果没有问题则登录成功。 ⑤如果没有绑定过当前设备或者指纹刷脸失败怎么办?显示密码输入框,走密码登录流程。
    2021-05-13
    1
    4
  • Jxin
    如此系统的介绍,大佬辛苦了。有被科普长见识到。
    2021-01-08
    3
  • Andrew陈海越
    感谢科普WebAuthn技术,虽然短时间内用不上,但相信是未来的趋势。
    2022-10-17归属地:湖南
  • Geek_d68bf9
    CAS协议
    2022-05-15
  • Geek_David
    我们公司的产品对于设备自带的web使用的是session认证,通过返回挑战串、盐等来进行登录;而其他厂商需要集成我们的设备时用的是digest认证,请问这样的设计两种之前有什么优缺点吗?
    2021-08-15
  • hanxu
    我们公司toC用的是token认证,token的发行和用户必要的保密信息都交给了aws的cognito做了
    2021-04-09
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部