linux - 针对 Active Directory 验证登录凭据(适用于受工作站限制的用户)

标签 linux windows authentication active-directory ldap

前言:我做了功课。问答such as these ones似乎没有解决我问题的具体性质。我的 google-fu 显然不够强大,因为我使用的所有搜索词都会引导我找到各种解决方案,这些解决方案不包括工作站名称,也没有指定我正在检查的工作站名称的方法。

背景:我有一个 Redmine在 Debian 上运行的服务器使用 LDAP 身份验证到本地 Windows 2003 Small Business Server Active Directory。我有这个工作正常,而且效果很好。

...除了一个用户被限制从他自己的工作站登录。

我认为这将是一件简单的事情,只需将 Samba 配置为使用 AD 加入域,然后只需将 Linux 机器的 NetBIOS 名称添加到该用户可以登录的机器列表中即可。不幸的是,这不是真的。我已验证 NetBIOS 名称 REDMINE 存在于 Windows 2003 服务器上的域计算机列表中,并且我还验证了 Samba 服务器和 Windows 2003 服务器之间没有明显的问题。我不希望针对 AD 或类似的东西验证 Linux 登录。

查看数据包捕获和 Windows 事件日志审核详细信息,当 LDAP 绑定(bind)尝试进入时,Windows 2003 似乎默认为 AD 的 NetBIOS 名称。我在事件日志中看到,用户 myusername 的登录尝试用于工作站 SERVERNAME,但使用正确的 Redmine 服务器 IP 地址:

Event Type: Failure Audit
Event Source:   Security
Event Category: Logon/Logoff 
Event ID:   533
Date:       6/3/2014
Time:       7:57:42 PM
User:       NT AUTHORITY\SYSTEM
Computer:   SERVERNAME
Description:
Logon Failure:
    Reason:     User not allowed to logon at this computer
    User Name:  myusername
    Domain:     DOMAINNAME
    Logon Type: 3
    Logon Process:  Advapi  
    Authentication Package: Negotiate
    Workstation Name:   SERVERNAME
    Caller User Name:   SERVERNAME$
    Caller Domain:  DOMAINNAME
    Caller Logon ID:    (0x0,0x3E7)
    Caller Process ID:  544
    Transited Services: -
    Source Network Address: redmine.server.ip
    Source Port:    47721

Redmine 的 LDAP 查询中没有 SERVERNAME 出现在查询中,这就是为什么我确定这是来自 Windows 服务器的原因。如果我将 AD 服务器 NetBIOS 名称添加到该用户可以登录的允许工作站列表中,Redmine 的查询将成功并且用户可以登录到 Redmine。

清理后的绑定(bind)信息如下:

CN=Firstname Lastname,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=domainname,DC=local

提供的密码显然也是正确的。返回的错误是有道理的,因为 Windows 确定我正在尝试从 SERVERNAME 登录而不是 REDMINE:

W80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 531, vece

(代码531表示“不允许用户登录 native ”)

有谁知道如何针对 Windows 2003 服务器创建 LDAP 登录查询,指定要检查登录的工作站?

最佳答案

在进一步思考之后,我得出的结论是这是一个糟糕的问题。

Windows 2003 似乎混淆了“绑定(bind)到 LDAP 服务器”和“登录到工作站”的概念。当我使用受限用户的凭据绑定(bind)到 AD 时,AD 服务器验证登录名和密码是否正确,但随后检查允许的工作站列表并发现 AD 服务器不在该列表中,因此绑定(bind)失败。

绑定(bind)到 AD 服务器与登录到 AD 服务器不是一回事,这就是问题所在。我会问一个更适合场景的新问题。

关于linux - 针对 Active Directory 验证登录凭据(适用于受工作站限制的用户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027012/

相关文章:

iphone - ASIHttpRequest登录身份验证问题

javascript - 如何在登录后显示某些按钮和余额

regex - 可以[一个| b] 在 grep BRE 模式下使用表达式?

linux - 无法连接 Mapr-FS 上的 Mapr-表?

c - 服务和应用程序之间的命名管道通信

ruby-on-rails - 是否有任何易于配置的带有适用于 Windows 的 ruby​​ 的网络服务器?

linux - 使用新字符串在 linux/windows 控制台中输入命令

java - 将 JNI 模块放在 Linux 或 OS X 中的什么地方

windows - Django Apache/mod_python Admin CSS 没有出现在管理表中

angularjs - 如何使用 AngularJS 在 Laravel 4 中保护 API 访问