安全攻防技能 30 讲
何为舟
前微博安全研发负责人
34680 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
开篇词 (1讲)
安全攻防技能 30 讲
15
15
1.0x
00:00/00:00
登录|注册

04 | 身份认证:除了账号密码,我们还能怎么做身份认证?

思考题
总结
单点登录如何解决身份认证问题?
身份认证的安全怎么保证?
身份认证主要面临哪些威胁?
身份认证包括哪些东西?
身份认证

该思维导图由 AI 生成,仅供参考

你好,我是何为舟。
上一讲,我们详细讲解了密码学的三种算法:高效安全的对称加密算法,解决密钥分发难题的非对称加密算法,以及提供单向加密的散列算法。
在表达了你对密码学清晰的理解之后,面试官开始相信你具备安全方面的基础知识了。于是,他准备和你探讨一下安全落地的细节。基于你之前提出的“黄金法则”,面试官问道:“黄金法则的认证(Authentication)部分不就是账号密码吗?这么简单的东西,有必要考虑得那么复杂吗?”
认证,也就是身份识别与认证(通常来说,识别和认证是一体的,因此后面我会用身份认证来指代识别和认证)。毫无疑问,对于一个安全的应用来说,身份认证是第一道门槛,它为后续所有的安全措施提供“身份”这样一个关键信息。
听完你的简单叙述后,面试官直接问道:“现在我们公司有好几个应用,每一个应用都有独立的账号体系,管理起来十分复杂。而且,内部员工的账号体系也没有建设起来。如果是你,你会怎么解决这些问题呢?”
现在你可能很难回答这些问题,没关系,带着这些问题,让我们来学习今天的内容。相信学完之后,再有人问,你都可以对答如流。

身份认证包括哪些东西?

首先,身份认证不仅仅是一个输入账号密码的登录页面而已,应用的各个部分都需要涉及身份认证。在我看来,身份认证可以分为两个部分:对外认证和对内认证
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了身份认证的重要性以及面临的挑战和威胁。身份认证不仅仅是简单的账号密码登录,还包括对外认证和对内认证两个部分。对内认证的管理复杂度较高,需要统一管理各种内部系统的登录认证。身份认证面临的威胁主要包括无认证、弱密码和认证信息泄露,这些威胁可能导致黑客冒充用户进行登录,获取权限并进行未被察觉的操作。为了保证身份认证的安全,文章提出了一些解决方案,如限制密码强度、定期修改密码、采用新技术升级验证手段等。此外,文章还强调了身份管理的重要性,提出单点登录作为解决方案。单点登录(SSO)的概念简单明了,用户只需进行一次认证即可访问所有网页、应用和其他产品。文章介绍了几种典型的单点登录方式,包括CAS流程、JWT、OAuth和OpenID。此外,文章还提到了自行实现单点登录体系的安全性问题,建议接入成熟的单点登录体系。综上所述,本文通过深入探讨身份认证的重要性、威胁和解决方案,以及单点登录的实现方式,为读者提供了全面的身份认证技术概览。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《安全攻防技能 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(34)

  • 最新
  • 精选
  • 小晏子
    试着答一下思考题, 目前公司认证主要纯在的问题是对内认证偏弱,各种服务器环境密码过于简单,而且口口相传,很容易泄露,也很容易遭受内部攻击。 要解决这个问题,我认为公司内部需要建立起一套对内认证的安全体系,首先,对于内部系统的登陆,可以使用跳板机的形式,绑定员工账号,员工使用其个人用户名密码登陆,其次,建立权限等级,不同员工绑定不同权限组,做到安全隔离,最后,可以建立账号监控体系,定期监控登陆日志,做风险分析报警等,防范风险于未然。

    作者回复: 赞

    2019-12-16
    2
    19
  • leslie
    填鸭式直接赶完了落下的课,发现有些问题有注意却没有去真正明白且换位思考。 极客时间做秋冬课程调研时曾经问过我,我当时就提出安全是目前极客时间最空白的内容却又是最需要的,年末终于出来了。前几个月学全栈梳理课程时尤为感受到安全的重要性,虽然很多时候我们会由于职业的关系在某方面去做一些安全策略,可是安全不是仅仅是局部的数据库、程序开发、网络防火墙,而是贯穿整个计算机系统的。单点再强只是一个点,各方面强才是真的强。 简单回答一下老师今天的问题,个人觉得应当是从多方面去做这件事情: 1.程序层:程序端在传输中禁用明文,早年的sql注入其实就是web页面传了具体值;其实目前账号登录最常规的还是手机验证码,动态随机生成的,超时重发而已; 2.数据库层:密码存储以算法加密形式存储,早年大量的明文存储其实造成了许多问题 3.操作系统层:强密码且定时过期,这个其实从windows2008开始就非常典型;如:密码必须大小写区分、必须特殊字符、必须16位之类的 4.网络层:就如老师之前课程举的例子-蹭网,公共网络中密码被泄露的风险很大,国内大量的密码泄露其中不少是蹭网蹭出来的。 以上就是个人对此在这些年工作中最典型看到和接触到问题:网络和安全这块确实偏弱,刚看完胥峰老师的书,希望课程中能和老师交流学习,提升这块的能力,更好的应当安全风险。谢谢老师的分享。

    作者回复: 你好,感谢你的留言。看起来你是确实有体会过安全的强需求的。课程会一点一点的覆盖主要的知识点,每节课的思考会集中在某个方向上,你也可以自己串联一下。希望能够帮助到你~

    2019-12-16
    2
    10
  • 老师,你好,咨询个问题。 应用服务和中间件(这两个以下简称服务)部署在公司的机房里,服务通过nginx对外暴露。nginx在机器A上,其余服务在机器B~N,公司的安全人员要扫描所有机器上的应用。个人感觉如果机器B~N上做好防火墙设置,只需要关系机器A上的安全问题就可以了,机器B~N不对外暴露,在应用服务层面就没有安全问题了。请问是否是这样

    作者回复: 嗯,这么做,一定程度上能缓解安全问题。比如nginx如果只暴露80端口,那么B~N的漏洞则主要集中在Web漏洞上。 但是,内网并不是绝对安全的,通过Web漏洞,也可以实现内网穿透,访问内网的其他服务。如果你的防火墙只是做在A和BN之间,那么对于这种横向渗透,就起不到防御作用了。

    2019-12-16
    7
  • 胡波 allenhu
    老师, 哪个haveibeenpwned网站显示的结果准确吗?我自己的gmail邮箱都显示"oh no" , 可是google并没有给我汇报这个gmail密码已经被泄露了啊?

    作者回复: 还是比较准确的。不过因为它没有显示具体细节,很可能是很早期的密码被泄露了。

    2019-12-16
    3
    5
  • xiao豪
    老师,请问LDAP是属于哪种,适合在什么场景下使用?

    作者回复: 内部认证用LDAP的多一些。LDAP比较独立,它自身包含了单点登录和群组管理的功能,可以方便公司内部作为组织架构的基础数据库支持。

    2019-12-16
    5
  • 雷霹雳的爸爸
    https://haveibeenpwned.com/ 这个,并不表示邮箱账号泄露了吧,我鬼子文实在是差,但是看下来它的解释,大概还是这个账号对应得标识,或者作为标识,在哪些已经被他收录的安全事件中涉及到了吧,当然有可能,这些安全事件中得网站中我用的和这个标识得email站密码一样,那我自然就中枪了,或者是由于OAuth认证关联信息,然后又被利用等等,这个其实希望老师能详细给解释一下,我最早是用1password时候给我导向到它家的,我还以为是1password宣传自己的产品...另外老师能点评一下1password这家得工具和服务么

    作者回复: 因为它没有披露密码,所以无法证实。但我认为haveibeenpwned的准确率还是可以的,只不过可能泄露的是很久很久之前的密码。 1password这类密码管理工具还是很好用的,至少我认为是目前个人用户保存密码的最佳解决方案。别人毕竟专门做密码存储的,方案的安全程度肯定比个人自存密码来得靠谱。

    2019-12-20
    4
  • 哈德韦
    老师好,怎么理解使用了 JWT 后,就无法注销了? 1. JWT 都有过期时间,过期后就自动注销了; 2. 如果 JWT 存放在客户端(cookie 或者 local storage),用户点注销,客户端只要删除保存好的 JWT 就行了; 3. 如果“注销”是指从服务器端将用户“强踢下线”,那么可以把密钥更新。(需要实现用户粒度的密钥管理) 以上是我对使用 JWT 注销的理解,请问是否有误?

    作者回复: 是的。说的其实就是第三种,用户粒度密钥管理实现成本上很高,一般都是统一密钥,所以无法注销。

    2020-07-15
    2
    3
  • 008
    课程提到的对外认证和对内认证才明白我们的一直理解的认证那么片面,特别是我们还把数据库密码明文写在配置文件里,想想都可怕,最近刚做的服务运维相关的应用,可以管理所有服务状态及配置,因为没有统一的内部认证系统,一直处于裸奔状态,心虚的很,所以一直在思考如何落地统一认证,也同时纠结于认证系统是否需要同时考虑授权,比较偏向于仅考虑App层面的授权(即是否可以访问该App),而每个App内的授权不在统一认证系统里做统一管理。不知道业界一般是如何考虑认证、授权、用户信息管理的。

    作者回复: 一般内部都是会采用SSO管理所有的内部员工权限的。对于数据库、服务之类的,会在依据服务特性去进行封装,比如使用堡垒机登录服务器,通过网关连接数据库等。

    2020-03-15
    3
  • 丽莎
    我们现在已经越来越习惯用这种通过微信/微博或者其他CAS来认证登陆的场景了,我一直好奇的难点是,在CAS完成认证过程后,登陆凭据是如何从CAS服务器转移到欲登陆的APP中的。我们知道Cookie等内容都是严格遵循浏览器的同源策略的,就算使用30X跳转,设置的Cookie也只能存在CAS域名内。我惟一想到的方法是在Reloacation的URL后面跟上认证凭证,请问我的想法对吗?老师有没有额外的资料可以补充给我阅读,谢谢。

    作者回复: 就是通过跳转实现的。不过在网页中,一般是会生成一个form表单,表单的内容就是各种凭证,然后提交的时候,相当于以POST请求跳转到新页面,这样传递信息的长度也不受限制。具体可以看一下,SAML,网页时代比较流行的单点登录机制。

    2019-12-16
    2
    3
  • 曙光
    老师,CAS流程和企业简单SSO之间的区别还是没弄懂,CAS的第5步“将认证信息发给应用”和企业简单版的第3步“返回认证凭据相关信息”,应用都会接收到认证信息,是不是都存在“过多的信任”问题?

    作者回复: 认证凭据的时效性和有效范围是可控的,通常只能在一段时间内认证某一款应用,因此可以下发给应用。但账号密码属于隐私信息,一旦泄漏,就可以认证全部应用,因此会存在风险。

    2020-03-11
    2
收起评论
显示
设置
留言
34
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部