企业级项目|用Python进行web开发企业统一用户认证和权限控制平台_python web流程审批

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

企业内部系统基本结构

由上图架构所示,一方面常见的办公系统(如代码仓库、Wiki等)自身即支持LDAP认证,通过配置Windows AD中的目录/用户搜索规则即完成对登录用户的认证;另一方面自行开发的业务系统通过中央认证服务器提供的接口间接的对Windows AD进行登录用户的认证,即一个用户,一套密码,在多个系统中都可使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.身份认证

(1)通过外部应用认证

外部应用,如即时通讯软件钉钉等,这些应用存有单独的一套用户凭证,通过应用提供的免登服务,将应用中的用户与统一认证服务器中的用户进行一一对应,当用户在外部应用中登录后,自动获得在企业内应用的已登录状态。

(2)通过TOTP动态验证码认证

OTP (One-Time Password) ,一次性密码,也称动态口令。它是使用密码技术实现在客户端和服务器之间共享秘密的一种认证技术,是一种强认证技术,是增强目前静态口令认证的一种非常方便的技术手段,是一种重要的双因素认证技术。

TOTP (Time-base One-Time Password) ,基于时间的一次性密码,也称时间同步的动态密码。当在一些用户不方便输入密码或者忘记密码的场景中,我们可以使用TOTP进行认证。服务器和用户各自保管共同的密钥,通过比对基于时间分片与哈希计算出的动态数字验证码即可完成对用户身份的认证。主流实现为Google Authenticator(Google身份验证器),阿里的身份宝也兼容该算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TOTP算法图示

(3)双因子认证

双因子认证(Two-Factor Authentication)是指结合密码以及实物(信用卡、SMS手机、令牌或指纹等生物标志)两种元素对用户进行认证的方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

动态验证码流程图示

结合上面使用的TOTP验证码,对于安全级别较高的应用或资源路径、或是系统探测到风险较高的操作时,即可以对用户重定向至双因子认证页面,进一步保障系统安全。

3.单点登录

主要实现方式:

(1)共享 cookie

利用同一域名下的cookie共享为基础,将session id写入共享cookie,在实现了后台session共享存储和访问后,不同的应用之间即实现了单点登录。

(2)Broker-based (基于经纪人)

在一个基于经纪人的 SSO 解决方案中,有一个集中的认证和用户帐号管理的服务器。经纪人能被用于进一步请求的电子的身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的"第三方"。例如 Kerberos 、 Sesame 、 IBM KryptoKnight (凭证库思想 ) 等。

(3)Agent-based(基于代理人)

在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如,它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个 " 翻译 " ,例如 SSH 等。

(4)Token-based

口令认证,比如 FTP 、邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。

  • 基于网关基于 SAMLTicket-based(基于票据)

4.BUC实践

在我们的内网应用中,最终选择了CAS协议作为单点登录的方案。CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法。CAS开始于2001年,并在2004年12月正式成为JA-SIG的一个项目。

CAS的主要特点有:

  • 开源支持多种认证机制:Active Directory、JAAS、JDBC、LDAP、X.509等安全策略:使用票据(Ticket)来实现支持的认证协议支持授权:可以决定哪些服务可以请求和验证服务票据提供高可用性支持多种客户端及SDK: Java, .Net,PHP,Python,nodejs 等服务端也有多种语言实现

(1)登录验证流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用户、CAS客户端、服务端三方交互过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(2)安全扩展

当CAS服务端完成了对用户和CAS客户端的验证之后,CAS服务端将验证后的用户信息传输给CAS客户端(目标应用),同时也可根据配置返回该应用下的附属用户信息,如用户拥有的该应用下的角色、权限和属性。目标应用根据服务器返回的用户信息进一步检查用户可访问的资源,适当的展示业务视图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、ACL使用技术和实现

在现代企业,尤其是互联网企业中,产品业务繁多,对数据安全、访问控制都提出了很高的要求,基于用户组织结构、汇报线等传统的分组模式已经无法适应和满足多变的互联网扁平化管理模式的需要,因此我们选择了基于角色和权限的动态分组来设计和实现企业中不用应用可以共享的安全访问管理系统。

1.权限

权限是针对资源和操作层面的最小安全访问控制单元,例如:

  • 按资源分,可以设置访问设备A、访问设备B等。按操作分,可以设置读取文件,写入文件等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例-1:权限分类示意图

2.角色

角色是针对应用使用者来设置的,可分为管理员、技术人员,普通用户等,也可按区域分为华北员工、华南员工等。

角色是一系列权限的集合,拥有某角色的用户即应当自动拥有该角色下包含的权限。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图-7:角色与权限关系示意图

3.属性

属性是针对用户层面下设置的独立的安全设置,用来扩展和实现更细粒度的自定义安全设置数据,如将可访问数据细化到数据库中的表、数据表中的行、列上。

得益于JSON的兼容性,可以很灵活的存储下这些自定义的结构化数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用户属性示意图

ACL实践

数据库建模

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

依模型图可以看出,一个应用可划分多个角色、权限、路径和属性,其中角色又可包含同应用下的权限和路径。一个用户对应一个ACL,通过将不同的控制单元授予用户,即可完成用户的访问控制配置。

配套功能设计

为了使访问控制的整套机制良好的运转起来,相关辅助和配套的功能也是不可缺少的,这里列举一些我们已经投入使用的功能:

(1)应用授权的分级、分组管理

不用业务应用的负责人可以分别对自己负责的业务进行授权管理,不会产生冲突和越权。

(2)应用菜单可见性、可访问性的集成

业务应用中的各子功能可以和预先设置的权限一对一或一对多映射,具有相应权限的用户才可以访问和使用相应的功能,前后台设置保持同步。

(3)应用下角色权限申请提交、授权变更、授权完成等自动化流程

基本的权限审批流减小了业务应用负责人和使用者之间的沟通成本,同时也记录了权限获取的记录,为日后的安全审计提供了可查的数据。

(4)应用访问日志收集、分析、审计、报警等

应用访问日志记录了更为详细的用户访问和操作记录,为安全审计提供了更完备的数据支持,同时也支持以一定的逻辑来分析和发现潜在的安全泄露风险。

五、总结

本文总结介绍了针对企业内网门户的统一用户管理、认证和授权管理的系统的组成部分和常见实现方法。使用开源CAS产品搭建的统一身份认证系统和定制化开发的安全访问控制系统在企业内网平台上得到了很好地实践和应用,各部门的业务系统也已稳定接入并使用,目前运行良好。随着系统规模和业务的增长,这一套平台仍可能会面临新的问题和挑战,这也使得我们在收集用户反馈的同时不断的进行重构和增强,以保障企业业务的稳定发展。

项目地址:

https://github.com/cangelzz/cas-demo-django-server

https://github.com/cangelzz/cas-demo-flask-client

https://github.com/cangelzz/cas-demo-java-client

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值