帮助选择身份验证方法

时间:2010-05-08 12:15:00

标签: java security authentication ldap kerberos

我需要为在客户环境中安装和集成的应用程序选择身份验证方法。有两种类型的环境--windows和linux / unix。应用程序是基于用户的,没有Web内容,纯Java。要求是对将根据客户提供的用户群使用我的应用程序的用户进行身份验证。意思是,客户安装我的应用程序,但使用自己的用户授予或拒绝访问我的应用程序。典型,对吧?

我有三个选择需要考虑,我需要选择一个最灵活的选项来覆盖最常见的现代环境,b)在保持稳健和标准的同时花费最少的精力。

选项(1) - 验证本地管理某些本地存储中的用户凭据,例如文件。然后,客户将其用户添加到我的应用程序中,然后它将检查密码。简单,笨拙,但会工作。客户必须使用我们必须提供的UI来打击他们想要授予我的应用访问权限的每个用户。对我来说很多工作,让客户头疼。

选项(2) - 使用LDAP身份验证。客户会告诉我的应用程序在哪里查找用户,我会将他们的目录解析为用户名并尝试使用找到的密码进行绑定。这是更好的方法IMO,但更脆弱,因为我将不得不走一个未知的目录结构,谁知道这是否将被允许到处。会更难测试,因为那里有很多LDAP实现,我想要的最后一件事就是淹没在这个伏都教中。

选项(3) - 使用普通Kerberos身份验证。客户会告诉我的应用程序使用哪个域(域)和哪个KDC(密钥分发中心)。在理想的世界中,这两个参数将是我需要设置的所有参数,而客户可以使用自己的管理工具来配置域和kdc。我的应用程序只是将用户凭据委托给第三方(使用JAAS或Spring安全性),并在第三方对它们感到满意时考虑成功。

我个人更喜欢#3,但不确定我可能会遇到什么惊喜。这会完全覆盖windows和* nix系统吗?还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

使用LDAP。访问非常简单,您需要的唯一参数是LDAP服务器(和ActiveDirectory是一个)。如果用户存在且密码正确,他将始终能够登录LDAP服务器。