首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ldap3在conn.search之后添加用户到组

ldap3在conn.search之后添加用户到组
EN

Stack Overflow用户
提问于 2020-06-19 09:01:47
回答 1查看 630关注 0票数 0

目前,我正在编写一个AWS Lambda函数,它的想法是,有人可以发送电子邮件到一个特定的地址与用户名和AD组,它将触发该功能,并将这个人添加到所需的组。

我使用的是python模块ldap3,conn.search部分和addUsersInGroup都在工作,但前提是我单独运行它。如果我创建了一个脚本,其中我已经拥有用户和组的cn或dn名称,并且使用了addUsersInGroup函数,那么它就能工作,但是如果在conn.search之前做了一个conn.search,它就无法为addUsersInGroup部分建立连接。

代码语言:javascript
运行
复制
from ldap3 import Server, Connection, ALL, NTLM, SUBTREE
from ldap3.extend.microsoft.addMembersToGroups import ad_add_members_to_groups as addUsersInGroups
import email
import os
import json


email = "sample@test.com"
subject = "username,ad-group"

user = subject.split(",")[0]
group = subject.split(",")[1]

emaildomain = email.split("@")[1]
domaingroup = ["test.com"]
adgroups = ["group1","group2"]

server = Server('serverIP', use_ssl=True, get_info=ALL)

conn = Connection(server, OU, 
password, auto_bind=True)

def find_user():

    user_criteria = "(&(objectClass=user)(sAMAccountName=%s))"%user

    if conn.search("OU", user_criteria):

        result = str(conn.entries)

        user_dn = result.split("-")[0].replace("[DN: ","")

        return user_dn


    return nouser


def find_group():

    group_criteria = "(&(objectClass=group)(sAMAccountName=%s))"%group

    if conn.search("OU", group_criteria):

        result_group = str(conn.entries)

        group_dn = result_group.split("-")[0].replace("[DN: ","")

        return group_dn

    return nogroup


def add_to_group(user,group):

    addUsersInGroups(conn,user,group)



if emaildomain in domaingroup:
    user = find_user()
    group = find_group()

    add_to_group(user,group)

请注意,出于安全原因,我不得不删除脚本中的一些内容。连接搜索用户或组是有效的,如果我运行添加到组的功能,它也工作,但只运行它之前没有任何搜索。

不知怎么的,我觉得让conn.search阻塞任何与搜索相关的连接,如果尝试将相同的连接用于不同的东西,例如向组中添加一个用户,该请求就会被阻塞。

以下是我收到的错误:

消息

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-22 07:21:19

在这个网站上找到了解决方案:https://github.com/cannatag/ldap3/issues/442

默认情况下,您将得到此错误,这可能是由于连接中的auto_referrals=True造成的。尝试使用: conn =Connection(服务器,"cn=xxx,cn=users,dc=wwww,dc=zzzz,dc=com","my_pass",auto_bind=True,auto_bind=True,不要搜索和另一个DC。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62466809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档