`
xcj26
  • 浏览: 1804 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

企业级系统的认证与授权设计

阅读更多

       在IT信息化中,数据安全是必须考虑的问题,小到门户网站,大到企业级平台应用,甚至企业云,公有云,数据安全都是一个核心问题。我从事ERP软件开发多年,在ERP的认证,授权方面相对有一个比较系统的了解,本着讨论交流的精神与大家一起共勉。

  首先我们要搞清楚一个问题,什么是认证,什么是授权。

  认证——你是谁(Who)?

  认证:认证(authentication):即对不同的用户进行识别,检查用户是否有权限对那些受限制的界面进行访问,这种称为认证。比如登录。

  授权——谁(Who),在那个系统(Where),可以做什么(What)?

  授权(authorization):决定用户可以对哪些功能按钮进行操作,对那些数据(数据行,数据列)进行有效的访问即称作为授权。

  其中功能操作的授权称作为功能权限。比如下图:员工A要有 公司知识库平台->培训->培训预算->申请培训->培训列表页面的【查询】和【申请】按钮,同时员工A要有 公司综合管理平台 ->信息中心->通知公告->通知公告列表页面的【发布】和【查询】按钮的操作权限。如图所示,在现实场景中,跨平台,跨系统的场景比比皆是。

  其中数据权限以下图为例:我们看到下图用红色框圈起来了一个数据列表。假设这个数据列表为某企业集团的销售汇总表。

  现在客户提出了如下几个需求:

  1) 销售总经理可以查看所有的汇总数据。

  2) 大区经理只能查看自己所属大区的数据。

  3) 职位等级在二级以下(包括二级)的只能查看自己所属区域交易累计金额小于1000的数据。

  4) 只有销售总经理,大区经理能查看联系方式。

  如此需求,在企业级ERP开发中屡见不鲜,为了解决客户的需求,我们不得不反复的去修改和发布代码,其实我们可以通过简单的配置来满足客户的需求。这个简单的配置我们就可以称之为认证授权系统,说到这儿,就简单的把这个系统的概念引申出来了。

 

  那我们要设计这个系统,我们要考虑到一些什么因素呢?要做出一个适应客户需求变化的系统,必须要具备一个良好的设计。

  首先,认证与授权系统的架构应该是一个SOA的架构。这儿所用的SOA绝对不是赶技术的时髦。因为一个企业集团可能有几个,甚而几十个,上百个的子系统。我们不可能为每个子系统都维护个套用户表,角色表,以及一套权限系统。所以要把这个认证与授权的功能给抽出来,做成一个松耦合的子系统。但同时这个子系统要与其它系统进行数据交互,所以我们要采用一定的技术手段来与业务系统通信,不管是用Web Service还是WCF,其实目的都只有一个,就是让认证与授权系统与其它业务系统进行通信。这样即实现了一处维护多处运用的场景,这样就实现了系统级的重用,当然,采用了SOA的开发,就不得不提SOA的安全,我在这个系统里是使用的c#拦截器机制,具体的实现以后有机会单独提出来与大家分享,有感兴趣的朋友我们可以建一个群共同交流。

  

  其次,系统的可扩展性要强,特别要有一个强有力的代码支撑。比如认证授权这个系统,用B/S模式的更好,还是用C/S模式的更好?这个是各圆其说,我做了六年的B/S项目,但是我最后还是选择用C/S的结构来开发,其中的原因以后有时间一一道来。我们来欣赏下现的一个代码片段:

  

  我把客户端的验证放在了Model上,如果在B/S架构下,我不用重复的去写一次JavaScript的验证。常用MVC的朋友都知道在B/S结构下,怎样用Model的属性进行客户端的验证了。在C/S结构下,可以通过WPF轻而易举的实现客户端的验证,这样写的目的,就达到了代码级别的重用。

  还有一个比较重要的因素,就是用户体验。当我们的程序设计的如何的好,代码重构的怎样的精练,如果没有一个好的人机交互,想必会抹杀很大一批用户的好感。对我们程序员来说,要设计一个好的人机交互界面,确实有待提升。我以现在这个系统的UI来说吧,在短短半年的时间里,UI重构了三次,第一次是用WPF下的Ribbon插件来设计的。第二次是用微软官方示例提供的设计,其中还包括了动态翻页的效果,非常炫。第三次,采用微软的Metro风格设计。很明显每次的设计都有质的提升。

 

第一个版本的界面:Ribbon。

  

第二个版本的界面:WPF技术下实现的翻页特效界面。

第三个版本的界面(Metro):采用Prism + MVVM开发的。

  每个界面虽然都丑,但是也各具特色。只是个人的喜好而已。

       这篇博客,我发布在 http://www.cnblogs.com 上,两次被移出首页。

 

1
3
分享到:
评论

相关推荐

    企业级的 Go 语言实战项目:认证和授权系统.zip

    在企业级的Go语言实战项目中,构建一个认证和授权系统是至关重要的任务。这个项目主要涉及以下几个核心知识点: 1. **Go语言基础**:Go(Golang)是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的...

    ArkID企业级IDaaS.IAM平台系统是一款开源的统一身份认证授权管理解决方案.rar

    由此可见,急需设计一个可信计算平台下的认证授权管理系统,对用户和业务进行深层次的认证和授权管理,并在保证系统安全性的同时兼顾认证效率。本文主要对可信计算平台和认证授权管理系统相关技术进行了研究,针对国内...

    企业级的 Go 语言实战项目:认证和授权系统(带配套课程).zip

    【标题】中的“企业级的 Go 语言实战项目:认证和授权系统”表明这是一个使用 Go 语言开发的实际项目,重点在于构建一个适用于企业的认证(Authentication)和授权(Authorization)系统。在IT领域,认证和授权是...

    Java开发企业级权限管理系统

    ### Java开发企业级权限管理系统知识点解析 #### 一、项目背景与目标 - **项目背景**:随着企业信息化水平的不断提高,对权限管理系统的依赖日益加深。为了满足不同角色、不同层级用户对于系统资源访问控制的需求...

    ABP框架之OpenIddict分布式认证授权学习手册v1.0

    ABP(Application Blocks for .NET)是一个开源的应用程序开发框架,它提供了模块化、分层结构,用于快速构建企业级.NET应用。ABP框架包括实体、仓储、服务层、事件、权限管理等多个组件,简化了开发流程。 2. **...

    .NET企业级应用架构设计带书签目录高清版第二版

    《.NET企业级应用架构设计》是针对.NET平台的一本权威指南,主要关注于如何构建高效、可扩展、易于维护的企业级系统。该书的第二版不仅提供了高清的阅读体验,还带有书签和目录,方便读者快速定位到所需内容。 在...

    Java企业级开发课程设计

    1. **安全性**:企业级应用需要考虑用户认证、授权、防止SQL注入、XSS攻击等安全问题。Spring Security可以提供一套完整的安全解决方案。 2. **事务管理**:在处理多表操作时,事务管理至关重要。Spring框架提供了...

    北大青鸟6.0Y2课件,使用Java企业级技术开发大型系统(4)

    【北大青鸟6.0 Y2课件:深入理解Java企业级技术开发大型系统】 本课程是北大青鸟6.0 Y2阶段的教学内容,主要针对使用Java进行企业级大型系统开发的知识点进行深入讲解。在Java企业级开发中,我们通常会接触到一系列...

    基于Springboot+Vue企业级工位管理系统源码案例设计.zip

    《基于Springboot+Vue的企业级工位管理系统源码解析与设计》 ...通过深入学习和理解这个案例,开发者不仅能掌握相关技术的实践应用,还能了解到企业级系统设计的思路和规范,为自己的职业生涯增添宝贵的经验。

    企业在线培训与知识竞赛系统设计与实现

    本文所述的“企业在线培训与知识竞赛系统设计与实现”所涉及的知识点主要包括在线教育培训系统的背景、中国邮政远程教育培训平台的具体应用、以及系统设计中所使用的相关技术和工具。 首先,文章的背景是中国邮政...

    Java企业级开发项目实践

    7. **安全性**:OAuth2、JWT(JSON Web Token)等授权认证机制,以及HTTPS、CSRF防护、XSS防范等网络安全性策略,是保障企业级应用安全的必备知识。 8. **微服务架构**:随着业务复杂度的增加,微服务架构逐渐成为...

    基于LDAP的统一用户认证系统设计与实现.pdf

    为此,《基于LDAP的统一用户认证系统设计与实现》这篇文章提出了利用LDAP(轻量级目录访问协议)构建统一用户认证系统的解决方案。 #### LDAP简介 LDAP是一种开放标准协议,用于访问和维护分布式目录信息。它基于X...

    ssm企业级权限管理系统.rar

    SSM企业级权限管理系统是一款基于Java技术栈,利用Spring、SpringMVC和MyBatis三大框架构建的企业级应用。此系统旨在实现用户权限的精细控制,确保数据安全和操作合规。IntelliJ IDEA是该系统开发过程中常用的集成...

    使用java企业级技术开发大型系统课程ppt

    在本课程"使用Java企业级技术开发大型系统课程ppt"中,我们将深入探讨...通过这个课程,学员不仅可以掌握Java企业级开发的技术栈,还能了解到大型系统设计的实践原则和最佳实践,为参与复杂的企业级项目打下坚实基础。

    开发企业级权限管理系统

    总结来说,开发企业级权限管理系统涉及了数据库设计、Spring Security配置、角色与权限管理、认证与授权逻辑、以及高级功能的实现。通过Java技术和Spring Security框架,我们可以构建一个强大、安全的权限管理系统,...

    Java基于企业微信的身份认证平台设计与实现.zip

    本项目"Java基于企业微信的身份认证平台设计与实现"旨在构建一个利用企业微信API进行用户验证和授权的系统,以提升企业内部系统的安全性和用户体验。以下是该平台设计与实现的核心知识点: 1. **企业微信API集成**...

Global site tag (gtag.js) - Google Analytics