LDAP:Web Apps和RBAC

时间:2015-07-27 20:44:53

标签: web-applications https ldap rbac

我理解LDAP的工作方式之一是,如果我错了,请纠正我,用户可以从他的计算机登录并访问一堆Web应用程序,只要他有权这样做并且凭证匹配。

我正在创建一个Web应用程序,我想用LDAP配置它。因此,我应该根据我的客户端使用LDAP API并确保他具有所需的权限。然后

  • LDAP还向我提供了WHO,它正在登录我的网络应用程序。在这种情况下,我可以与我的RBAC通信并找出他拥有的权限。
  • 此外,LDAP是否以纯文本格式将他的用户名和密码传达给我的网络应用程序?
  • 我的网络应用程序如何确保他是他声称的人(交叉检查他的用户名和密码)。在明文密码通信的情况下,HTTPS有帮助,但它确实安全吗?

2 个答案:

答案 0 :(得分:0)

你混淆了几件事。

  • 身份验证与授权不同
    • 身份验证是关于某人的证明,通常证明某人的身份。我是鲍勃,因为我知道我的用户名和密码。
    • 授权是关于确定您将授予Bob的访问级别。有不同的授权(访问控制)范例。 RBAC和ABAC是最流行的两种。 RBAC使用角色,组和权限来确定用户是否应该获得访问权限。 ABAC使用属性和策略。
  • LDAP不是身份验证机制,也不是授权机制。 LDAP是一个用户目录。它包含有关用户的信息,通常是用户名,全名,电子邮件,密码,组成员身份,角色信息等等。有标准化的LDAP对象,例如为inetOrgPerson。

应用程序(任何类型的应用程序)使用不同的身份验证技术。在Java Web世界中,有一种叫做JAAS的东西。

  

Java身份验证和授权服务(JAAS)是一组应用程序接口(API),可以确定尝试运行Java代码的用户或计算机的身份,并确保该实体具有执行的权限或权限要求的功能......(维基百科)

在.NET中,您有一个名为WCF的框架,该框架在security上有专门的部分。

考虑到这一点,让我们回到你的问题。如果您有一个Java Web应用程序,并且您使用LDAP作为用户目录,那么您很可能会实现 通过JAAS在您的应用程序和LDAP之间进行集成。

LDAP会向您的应用发送密码吗? NOOOOOOOO永远不会,这将是一个可怕的想法。希望顺便说一下,您的LDAP不会以明文形式存储密码。通常,密码将是单向加密的(散列),即无法从加密值中检索密码的值。

那么,LDAP(通过JAAS)可以告诉你什么?

  • 用户名/密码组合是否有效
  • 用户拥有的角色
  • 用户拥有的群组
  • 以及可选的更多。一旦您知道用户的ID(或在LDAP语言中使用DN),您就可以查询LDAP以获取更多属性。

最后一件事。通常,身份验证(和授权)不是由应用程序直接处理,而是由应用程序的容器直接处理。如果您编写Java Web应用程序,很可能您将在Apache Tomcat中运行它。 Tomcat附带JAAS,并与Tomcat的内部用户存储以及其他用户存储(例如,LDAP或数据库)进行本机集成。

所以你的第一个问题应该是:我在编写应用程序的语言是什么?我该怎么办呢?我可以免费获得任何东西吗?

这是保护Java Web应用程序的old Oracle tutorial

答案 1 :(得分:0)

LDAP是用于查询AD和其他支持用户目录中的项目的协议。它是传达AD用户并因此进行身份验证的媒介。通过身份验证后,您可以检查用户的授权。在任何应用程序上实施RBAC包括身份验证,授权和审计。

  1. 身份验证:确认用户的身份
  2. 授权:定义用户在应用程序中可以执行的操作
  3. 审核:跟踪应用程序中的敏感交易
  4. 通过LDAP,您可以使用或不使用密码(如果是当前用户)来通信和验证AD用户。它可能并非在所有平台上都受支持,因此请检查操作系统上的用户目录是否支持LDAP进行通信。