首页 文章

TSQL:从LDAP访问用户数据

提问于
浏览
0

我有一个存储用户信息的Active Directory(LDAP) . 我正在尝试使用TSQL访问它,但我遇到了身份验证问题 .

LDAP看起来像这样(我编辑了数据):

enter image description here

用户具有以下属性:

enter image description here

现在,我试图通过使用OPENROWSET的SQL Server中的TSQL查询来获取此用户的信息,如下所示:

SELECT *
FROM 
OPENROWSET('ADSDSOObject','adsdatasource'; 'domain.com.io\test';'the_sha1_pass',
'SELECT  givenname
    FROM ''LDAP://domain.com.io/ou=Users,
      dc=domain,dc=com,dc=io'' WHERE givenname = ''Test''
      ')

但是当我执行它时,我收到以下错误:

服务器:消息7399,级别16,状态1,行1 OLE DB提供程序“ADSDSOObject”报告错误 . 提供者指示用户没有执行操作的权限 .

现在,我不知道是否必须发送我正在尝试查询的用户的身份验证,或者我用来连接LDAPAdmin的凭据 . 如果我必须发送它,我应该发送已经加密或没有加密的通行证吗?

谢谢 .

1 回答

  • 0

    您可以通过删除用户名和密码来更改您的OPENROWSET查询,如下所示

    SELECT * FROM OPENROWSET('ADSDSOObject','adsdatasource',
    'SELECT givenname
        FROM ''LDAP://kodyaz.com/DC=kodyaz,DC=com'' WHERE givenname = ''KODYAZ''
          ')
    

    或者作为替代方案,您可以尝试以下查询结构

    SELECT * FROM OpenQuery(ADSI, 'SELECT * FROM ''LDAP://kodyaz.com/DC=kodyaz,DC=com'' WHERE objectCategory=''user'' AND givenname = ''KODYAZ'' ')
    

    我在OpenQuery命令中使用givenname参数在WHERE子句中添加了用户objectCategory

    在运行Select语句之前,您可以add LDAP as linked server in SQL Server,如参考教程中所示

    EXEC sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces', 'ADSDSOObject', 'adsdatasource'
    

相关问题