Duo API目录同步

时间:2018-12-17 16:24:13

标签: python python-3.x

默认情况下,Duo Sync每天运行一次,由于业务需求,这需要每2小时执行一次。查看DUO API,有一个用于用户同步的命令:

python -m duo_client.client --ikey <> --skey <> --host api-<>.duosecurity.com --method POST --path /admin/v1/users username=<> /directorysync/<DIR SYNC>/syncuser

但是我看不到与Active Directory进行总体同步的API,因此,为了解决这一问题,我希望从2FA组中获取所有用户,并使用以下用户名通过循环通过用户名进行同步:

import sys
import os
import duo_client
from ldap3 import Server, Connection, ALL, NTLM, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, AUTO_BIND_NO_TLS, SUBTREE
from ldap3.core.exceptions import LDAPCursorError

server_name = ''
domain_name = ''
user_name = ''
password = '!'

admin_api = duo_client.Admin(
    ikey= "",
    skey= "",
    host= "api-.duosecurity.com",)

format_string = '{:40}'
print(format_string.format('samaccountname'))

server = Server(server_name, get_info=ALL)
conn = Connection(server, user='{}\\{}'.format(domain_name, user_name), password=password, authentication=NTLM,
auto_bind=True)
conn.search('dc={},dc=int'.format(domain_name), '(&(objectCategory=user)(memberOf=CN=2FA,OU=,OU=,OU=,OU=,DC=,DC=int))',
attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES])

for e in sorted(conn.entries):
    print(e.samaccountname)
    os.system("python -m duo_client.client --ikey --skey --host api-.duosecurity.com --method POST --path /admin/v1/users username={}/directorysync//syncuser".format(e.samaccountname))"

上面的代码有些起作用,但是对于某些用户,它还会如下重新创建它们:User_ID,例如“ username / Dir / DIRAPI / usersync”。如Duo API下图所示 Syncing User

1 个答案:

答案 0 :(得分:0)

似乎用户名= {}输入错误

下面是创建一个新用户的原因,所以我为什么看到用户名/..../....

发布/ admin / v1 / users用户名= {}

以下是使用API​​调用的正确方法。

from . import pop
from . import pop1
# and so on

# and now call all main functions
pop.main()
pop1.main()
# and so on
相关问题