我开始一个项目,允许现有的Web应用程序使用活动目录进行身份验证,但在应用程序中保留授权。我想从简单开始,所以我认为用户会在我现有的登录表单中输入他们的AD用户名/密码,然后我会对AD服务器执行ldap绑定以验证用户身份。 一旦用户通过身份验证,我就会从我的数据库中提取该用户,该数据库具有用户可以看到的功能的所有授权信息。
我的问题是在我的表中存储的最佳AD元素是什么来建立关联?在过去我使用过用户名,但在查看AD返回的一些元素后,我想知道是否应该使用安全ID或GUID或其他东西?
当用户名变更像员工结婚或离婚时,我被烧了......所以我知道这很脆弱。
如果有所不同,我的目标是Windows 2003 AD及以上版本;这适用于某些客户拥有大型AD林,有些客户端是小型网络的产品。
答案 0 :(得分:2)
存储SID是最可靠的方法;这是所有Microsoft AD事物使用的唯一ID,安全组,权限等。
如果你在.Net上构建,你应该认真考虑.Net 3.5,有一个新的命名空间System.DirectoryServices.AccountManagement,极大简化了代码,并为你提供了很好的对象。
答案 1 :(得分:1)
除非用户共享计算机,否则为什么不使用Windows integrated logon?对用户来说更容易,作为开发人员更容易对自己更容易,并且更安全(可以嗅探密码的地方少一个)。
我是否需要提及允许用户身份更改是企业安全策略不佳?使可追溯性更难,允许一些新的攻击媒介,并让你头痛。
正如尼克所提到的,SID是一个稳定的标识符,但不应该让用户为他/她自己输入!