【问题标题】:Suggestion/Guidance to Implementing LDAP (Active Directory) authentication实施 LDAP(Active Directory)身份验证的建议/指南
【发布时间】:2017-01-07 10:46:36
【问题描述】:

问题陈述:

我正在尝试构建一个需要身份验证和授权的自定义管理系统。 系统需要具有管理/创建/更新/删除用户、角色、权限和组的能力。

我的设计解决方案

我计划从头开始在内部实现此功能,并将提供如下身份验证和授权。

身份验证:用户将提供他们的凭据,系统将验证用户是否有效。

授权:一旦用户通过身份验证,根据用户组和他们可以访问网站上所请求页面的权限。

问题:

现在,我的问题是,假设我成功构建了此应用程序,并且将来我的应用程序需要 LDAP(活动目录)身份验证,是否可以插入 LDAP 相关功能以保持我现有应用程序的完整性,或者我将不得不重新 -使用 LDAP API 编写整个或大部分应用程序。

我看过 apache shiro 和 spring security 哪个 提供 LDAP 功能,还提供管理/创建/更新/删除用户的功能。

到目前为止,我还没有决定是跟他们一起去还是自己写。

如果我能得到关于如何处理事情的详细回复,将不胜感激。

注意: 我是 LDAP 的新手,所以如果我在 LDAP 方面使用了一些错误的术语,请见谅。

【问题讨论】:

    标签: ldap shiro spring-ldap


    【解决方案1】:

    我建议不要自己实现,只需与现有 API 集成即可。

    披露:我为Stormpath(提供此功能)和Apache Shiro 工作。

    此外,如果您的应用程序需要 LDAP 支持,我见过的大多数 LDAP 设置仅在与应用程序集成时支持读取操作,因此您可能想与您的 LDAP 管理员聊天并查看如果您的“管理”用户用例可行。

    【讨论】:

    • spring security 或 apache shiro 是否有能力支持自定义角色、权限和组?我可以根据用户的权限而不是 spring security 或 Shiro 中的角色来控制用户对特定页面的访问吗?
    • 是的,关于Shiro's permissions 的一般概述,可以配置为保护给定的path,或通过基于程序和注释的方法。
    【解决方案2】:

    安全是一个严肃的领域,有很多很多隐藏的复杂性。我肯定会建议不要自己实施。既然你提到了 Spring LDAP,我猜你是在一个基于 Spring 的项目中。在这样的设置中,显而易见的选择是出色的 Spring Security 项目。

    【讨论】:

    • 谢谢,spring security 是否有能力根据权限和角色允许/禁止访问某个页面?我可以在我的表中定义组并让 spring 使用这些组来允许/禁止访问某个页面吗?我可以在 Spring Security 中定义自定义角色吗?
    • 哦,是的,还有更多:)。 Spring Security 默认使用基于角色的安全授权。从您的问题中不清楚您通过分离角色、权限和组来实现什么(您是否在考虑基于 ACL 的授权?),但一切都是完全可插入的,因此您将能够使用您可能想要的任何自定义授权方案(还有对基于 ACL 的授权的开箱即用支持)。看看参考文档,真的很不错!
    • 我的意思是,在 spring 文档中它说授权是基于角色的。我想覆盖它并根据权限创建授权。我的架构中有 3 个表。用户、角色和权限,我想通过权限而不是角色来授权用户。就像用户拥有特定权限执行特定操作或显示特定页面一样。因此,它拥有我自己的用户、权限和角色表并使用弹簧安全性。此外,我会有一个用户界面来编辑、更新和创建新角色、用户和权限。
    • 在其最简单的设置中,Spring Security 中的授权基于称为授予权限的东西。在开箱即用的实现中,这通常是角色,但这是完全可插入的;您需要做的就是根据您的特定需求调整每个用户的授予权限人口(在您的情况下,改为填充权限)。用于编辑/更新等的用户界面(和后端基础设施)与身份验证/授权基础设施完全分离。 Spring-ldap 是用于简化后端部分的有用工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多