使用 python 请求通过用户服务插件在 openfire 中创建新用户
create new users in openfire via user service plugin using python requests
我正在尝试编写一个 python 程序来向 openfire 服务器添加一个新用户。我启用了用户服务请求和 http basic auth。
我收到 Response 401 。这是我的代码
import requests
from requests.auth import HTTPDigestAuth
def add_controller(name,password):
xml = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<username>""" + name + """</username>
<password>""" + password + """<password>
</user>"""
headers = {'Content-Type': 'application/xml','Authorization':'Basic YWRtaW46MTIzNDU='}
r = requests.post(url='http://192.168.200.115:9090/plugins/userService/users', data=xml, headers=headers ,auth=HTTPDigestAuth('admin','admin'))
print r
add_controller("test@example.com","test")
你不应该设置两个 Authorization
headers。您可以执行基本 或 摘要授权,并且 auth
参数可以处理其中任何一个。任选其一。
使用基本身份验证:
headers = {'Content-Type': 'application/xml'}
r = requests.post(
url='http://192.168.200.115:9090/plugins/userService/users',
data=xml, headers=headers,
auth=('admin', '12345'))
或使用摘要验证:
headers = {'Content-Type': 'application/xml'}
r = requests.post(
url='http://192.168.200.115:9090/plugins/userService/users',
data=xml, headers=headers,
auth=HTTPDigestAuth('admin', '12345'))
请参阅文档的 dedicated Authentication chapter。
Openfire user service endpoint 应该可以与基本身份验证选项一起正常工作。
您可以使用模板更轻松地创建 XML 文档,您应该真正使用 xml.sax.saxutils.escape()
function 来确保您的数据适合包含在文档中:
from xml.sax.saxutils import escape
xml = """\
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<username>{}</username>
<password>{}<password>
</user>""".format(escape(name), escape(password))
供以后参考,openfire需要权限header。我的工作代码如下,它添加了密码为 test
的测试用户
import requests
from xml.sax.saxutils import escape
def add_controller(name,password):
xml = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<username>{}</username>
<password>{}</password>
</user>""".format(escape(name), escape(password))
headers = {'Content-Type': 'application/xml','Authorization': 'Basic YWRtaW46MTIzNDU='}
r = requests.post(
url='http://192.168.200.105:9090/plugins/userService/users',
data=xml, headers=headers,
auth=('admin', 'admin')
)
print r
add_controller("test","test")
我正在尝试编写一个 python 程序来向 openfire 服务器添加一个新用户。我启用了用户服务请求和 http basic auth。 我收到 Response 401 。这是我的代码
import requests
from requests.auth import HTTPDigestAuth
def add_controller(name,password):
xml = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<username>""" + name + """</username>
<password>""" + password + """<password>
</user>"""
headers = {'Content-Type': 'application/xml','Authorization':'Basic YWRtaW46MTIzNDU='}
r = requests.post(url='http://192.168.200.115:9090/plugins/userService/users', data=xml, headers=headers ,auth=HTTPDigestAuth('admin','admin'))
print r
add_controller("test@example.com","test")
你不应该设置两个 Authorization
headers。您可以执行基本 或 摘要授权,并且 auth
参数可以处理其中任何一个。任选其一。
使用基本身份验证:
headers = {'Content-Type': 'application/xml'}
r = requests.post(
url='http://192.168.200.115:9090/plugins/userService/users',
data=xml, headers=headers,
auth=('admin', '12345'))
或使用摘要验证:
headers = {'Content-Type': 'application/xml'}
r = requests.post(
url='http://192.168.200.115:9090/plugins/userService/users',
data=xml, headers=headers,
auth=HTTPDigestAuth('admin', '12345'))
请参阅文档的 dedicated Authentication chapter。
Openfire user service endpoint 应该可以与基本身份验证选项一起正常工作。
您可以使用模板更轻松地创建 XML 文档,您应该真正使用 xml.sax.saxutils.escape()
function 来确保您的数据适合包含在文档中:
from xml.sax.saxutils import escape
xml = """\
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<username>{}</username>
<password>{}<password>
</user>""".format(escape(name), escape(password))
供以后参考,openfire需要权限header。我的工作代码如下,它添加了密码为 test
的测试用户import requests
from xml.sax.saxutils import escape
def add_controller(name,password):
xml = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<username>{}</username>
<password>{}</password>
</user>""".format(escape(name), escape(password))
headers = {'Content-Type': 'application/xml','Authorization': 'Basic YWRtaW46MTIzNDU='}
r = requests.post(
url='http://192.168.200.105:9090/plugins/userService/users',
data=xml, headers=headers,
auth=('admin', 'admin')
)
print r
add_controller("test","test")