通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务。 我将分享我的经验并最终确定解决方案的结论。

该设计包括客户端(Web应用程序)和服务器(A&A中心)。

术语:

1.验证:

认证是系统可以安全地标识其用户的机制。 回答问题“谁是用户?” 身份验证还包括SSO(单点登录)。 一种机制,使用户能够一次登录并获得所有参与资源的“免费通行证”,而无需附加标志。

2.授权:

授权是验证用户是否具有访问某些资源或部分的角色/权限的过程。
回答问题:用户X是否有权访问资源/操作Y?

3.受保护的客户:

通常,a&a机制与受保护的客户端框架配合使用:Spring安全性,Apache Shiro,Wicket身份验证等。 我将在稍后的文章中进行评论。

要考虑的主要主题:

  1. 认证服务器
  2. 安全的Web客户端框架
  3. 授权职责

完整的解决方案提供商:

在我的研究中,我遇到了完整的解决方案提供商:

  • Open AM(称为OpenSSO)–他们声称是一个开源项目。 但是过了一会儿,您发现它确实是一个开放源代码,但并非用于商业用途。 您需要为他们的a&a配套支付大量的钱。
  • 人群– Atlassian。 似乎是一种快速,良好且非常便宜的解决方案。 但是,我们仍在走向完全商业化的开源解决方案。 这个也不符合我们的需求。

受保护的客户:

  • Spring安全性:非常流行并且广泛使用。 当您想要拥有除基本设置以外的更多功能时,Spring Security需要大量的xml配置。
  • 此外,如果您需要支持权限(而不仅是角色),Spring安全性不提供现成的支持。

  • Apache Shiro:–很棒的产品。 开箱即用的配置和权限支持非常简单。
  • 问题在于Shiro的社区仍然很小,而且该项目还很新。

解:

  1. 认证服务器:

    我遇到了CAS(中央身份验证服务)–伟大且完全开源的项目。 CAS提供SSO解决方案并支持流行的协议,例如SAML,OPENID,Auth。

    因此,如果我们将CAS与LDAP服务器集成在一起(以保存用户的信息),我们就可以实现身份验证模型(并且开箱即用地拥有SSO)。

    CAS基于Spring,非常容易扩展,以防我们要进行自定义更改。 您可以轻松下载源代码,并根据需要对其进行自定义。

    CAS配置非常容易并且有据可查。

  2. 受保护的客户端框架:

    我选择了Spring Security。 三个原因:

    1. 该Web应用程序是基于Spring的。
    2. 受欢迎和背后的社区绰绰有余。
    3. 与CAS完美集成。

    *我提到Spring安全缺乏权限。 但是有一种解决方法。 可以在此处找到简短的示例: http : //en.tekstenuitleg.net/blog/spring-security-with-roles-and-rights

    到目前为止,我们有Spring Security,Cas和LDAP(OpenLdap)服务器。

  3. 授权职责:

    可能有些棘手取决于您的项目要求。 您可以通过两种方式配置授权流:

    1. 集中授权:

      CAS支持属性。 这意味着您可以向返回的响应中添加其他属性(角色/权限)(通过SAML,这非常简单)。

      您实际上可以选择并配置从哪个源中提取其他属性(数据库,Ldap,Active Directory等)。

      这是一个非常简洁而优雅的解决方案–一个中心,可以按要求提供每个用户的身份验证和授权角色/权限。

    2. 分散授权:

      您可以通过扩展UserDetails接口来配置Spring Security。 然后,让每个应用程序在成功通过身份验证后控制授权逻辑。

      *是否存在每个Web客户端应用程序应对其授权逻辑负责还是对其进行集中管理的公开辩论(正如我在第一点所述)。

我建议根据您的项目需求用例来确定正确的态度。

最后,我们有了一个完全用于商业用途的a&a开源解决方案。

参考: IdanFridman.com博客上的JCG合作伙伴 Idan Fridman提供的身份验证和授权作为开源解决方案服务 。

翻译自: https://www.javacodegeeks.com/2013/11/authentication-and-authorization-as-an-open-source-solution-service.html

身份验证和授权作为开源解决方案服务相关推荐

  1. 开源软件加密授权方案_身份验证和授权作为开源解决方案服务

    开源软件加密授权方案 通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务. 我将分享我的经验并最终确定解决方案的结论. 该设计包括客户端(Web应用程序)和服务器(A&A ...

  2. 【Windows Server 2019】FTP服务的配置与管理——配置FTP站点(上)IP地址限制、身份验证、授权规则和请求筛选

    目录 5. 配置FTP站点 5.1 FTP IP地址和域限制 5.2 FTP身份验证 5.3 FTP授权规则 5.4 FTP请求筛选 参考资料 关联博文 5. 配置FTP站点 5.1 FTP IP地址 ...

  3. .NET6之MiniAPI(九):基于角色的身份验证和授权

    身份验证是这样一个过程:由用户提供凭据,然后将其与存储在操作系统.数据库.应用或资源中的凭据进行比较. 在授权过程中,如果凭据匹配,则用户身份验证成功,可执行已向其授权的操作. 授权指判断允许用户执行 ...

  4. 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分

    目录 介绍 JWT(JSON Web令牌) ASP.NET Core中的JWToken配置 用户模型类 创建令牌 第1步 第2步 第4步 令牌存储 中间件 自定义中间件app.Use() 中间件app ...

  5. 使用kubectl访问Kubernetes集群时的身份验证和授权

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 kubectl是日常访问和管理Kubernetes集群最为常用的工具. 当我们使用kubeadm成功引导启动(init)一个Kubernetes集群的 ...

  6. java验证身份证合法性_Java安全性,第2部分:身份验证和授权

    关于本教程 本教程是关于什么的? 也许没有比应用程序安全更重要的软件工程主题. 攻击是昂贵的,无论是来自内部还是外部,而且某些攻击可能会使软件公司承担赔偿责任. 随着计算机(尤其是Internet)技 ...

  7. 【.NET框架实战】IdentityServer4身份验证、授权

    [.NET框架实战]IdentityServer4身份验证.授权 什么是身份认证 身份认证是指当客户端访问服务端资源时,验证客户端是否合法的一种机制 什么是授权 授权就是指当客户端经过身份认证后,能够 ...

  8. AAA(身份验证,授权和记账)简介

    AAA服务器 AAA是认证,授权和计费(认证,授权,计费)的三个英文字的缩写.其主要目的是管理哪些用户可以访问网络服务器,哪些服务可供具有访问权限的用户使用,以及如何考虑使用网络资源的用户.具体来说: ...

  9. 身份验证与授权(译)

    前言:身份验证与授权是网站开发比不可能绕开的话题,有趣的是,这两个单词的英文字母其实是很相似的,authentication and authorization,那么这两者到底有什么不同呢,下面翻译的 ...

最新文章

  1. 大厂首发!java代码对齐快捷键
  2. [Swift]LeetCode522. 最长特殊序列 II | Longest Uncommon Subsequence II
  3. 徒手撸一个简单的 IOC
  4. java统计各空气质量最大值_空气质量历史数据分析
  5. nodeJs配置相关以及JSON.parse
  6. mysql lenenc int_MySQL-NonMySQL同步工具源码解读——确定同步位置
  7. 对弈(nim-k游戏博弈)
  8. oracle更新数据没反应,ORACLE更新数据时如果有就更新没有就插入
  9. php mysql存中文,PHP+MySQL存储数据常见中文乱码问题小结
  10. java list详解_java集合List解析
  11. python dataframe排序_python – Pandas DataFrame排序忽略了这种情况
  12. ATMEGA128+ADS1110+12864液晶显示程序和电路图
  13. Python数据分析案例09——航空公司客户聚类分析
  14. 测试计划工作的目的是什么?
  15. 华为牛人的十年工作感悟
  16. 中国科学家完全破解世界级百年数学难题庞加莱猜想
  17. Pocket PC C#
  18. 解读MT7620A上的DTS文件
  19. Chapter 4 Part 5 WPAS扫描源码走读
  20. GreenPlum 大数据平台--运维(三)

热门文章

  1. mysql数据横表变成竖表_MySQL中横表和竖表相互转换
  2. rabbitmq-java生产者消费者
  3. ES6 Map对象的使用
  4. char类型和Unicode编码
  5. java第三阶段源代码_有效Java第三版的源代码已更新为使用较新的功能
  6. run spark pi_Spark Run本地设计模式
  7. 迁移学习 简而言之_简而言之SPIFFE
  8. 成为Java流大师–第1部分:创建流
  9. file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...
  10. java lambda循环_在Java 8 Lambda中创建自己的循环结构