gpt4 book ai didi

delphi - 使用 Unicode 的 AD 身份验证

转载 作者:行者123 更新时间:2023-12-02 02:03:46 24 4
gpt4 key购买 nike

刚刚使用 C# 实现了 AD 身份验证:

DirectoryEntry entry = 
new DirectoryEntry(_path, domainAndUsername, pwd, AuthenticationTypes.Secure);

其中 _path 是 LDAP://+ 完全限定域名(例如域 Controller 的 IP)。

现在我必须使用 Delphi 做同样的事情。所以我在 http://www.freemeg.com/index.php/projects/projects-2/15-delphi-ldap-authentication-component 找到了 Solomon 优秀的 Delphi 2007 LDAP 实现

  1. 有人有 Delphi 2009+ (unicode) 的工作版本吗?
  2. 有人有一个包含简单 AD 身份验证处理(例如验证)域\用户 ID 和密码的工作示例吗?

在 C# 中,好的部分是我不需要遍历 AD - 我只需通过 LDAP 执行一级搜索 - 只需检查用户是否经过身份验证。

最佳答案

Tony Caduto 为我提供了 Synapse 解决方案:

我从创建的身份验证对象中删除了这些内容,我不想发布整个内容,因为其中还有很多其他不相关的内容。

这应该可以帮助您继续,关键是将 AD 用户名与“@your.ad.domain.name”连接起来成功绑定(bind)后,您可以通过提供基本 DN 来搜索 AD 目录并使用ldapsend单元的搜索功能。

我发现这比其他方法更快,而且很可靠。您确实需要获取主干版本synapse,因此它可以与更高版本的 delphi 一起使用。

uses ldapsend

var
fldap:tldapsend;
fad_domain,ausername,apassword:string;
begin
ausername:='your AD username';
apassword:='your AD password';
fldap := TLDAPSend.Create;
fad_domain:= 'your.ad.domain';
fldap.TargetHost:=fad_domain;
//next line is the key to getting AD authentication working
fldap.UserName := ausername+'@'+fad_domain;
fldap.Password := apassword;
try
try
if fldap.Login then
if fldap.Bind then
begin
//user is succesfully authenticated at this point

end else
raise exception.Create('LDAP bind failed.');
except
on e:exception do
//whatever
end;
finally
fldap.logout;
freeandnil(fldap);
end;
end;

感谢托尼!!!

关于delphi - 使用 Unicode 的 AD 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7743601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com