Zimbra SOAP создать аккаунт

Я хочу создать учетную запись пользователя Zimbra с SOAP API и не могу заставить его работать — это странно, потому что я могу получить AuthToken и даже может просматривать информацию о счетах, которые уже созданы (через панель администратора) с запросом GetAccountRequest, но создание учетной записи не работает.

Вот мой код для запроса AuthToken (POST):

Header: Content-Type: application/soap+xml

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header xmlns="urn:zimbra">
<context></context>
</soap:Header>
<soap:Body>
<AuthRequest xmlns="urn:zimbraAdmin" password="myPassword">
<account by="adminName">[email protected]</account>
</AuthRequest>
</soap:Body>
</soap:Envelope>

И это работает, я получаю токен аутентификации обратно.

Затем я пытаюсь создать новую учетную запись пользователя с этим (POST) запросом:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header xmlns="urn:zimbraAdmin">
<context>
<authToken> 0_69cd602eef3cf46bb488b02c6a173da698d17bdb_69643blablaTherestofmyauthtoken</authToken>
</context>
</soap:Header>
<soap:Body>
<CreateAccountRequest xmlns="urn:zimbraAdmin" name="[email protected]" password="john123!">
<a n="givenName">John</a>
<a n="sn">Doe</a>
<a n="displayName">John Doe</a>
</CreateAccountRequest>
</soap:Body>
</soap:Envelope>

И вот ответ, который я получаю:

SimpleXMLElement Object
(
[soap:Code] => SimpleXMLElement Object
(
[soap:Value] => soap:Sender
)

[soap:Reason] => SimpleXMLElement Object
(
[soap:Text] => no valid authtoken present
)

[soap:Detail] => SimpleXMLElement Object
(
[Error] => SimpleXMLElement Object
(
[Code] => service.AUTH_REQUIRED
[Trace] => btpool0-3022://zimbra.mydomain.com:7071/service/admin/soap:1449756733826:bc04a0eab6d6c7ec:SoapEngine368
)

)

)

Кто-нибудь может мне помочь? Спасибо..

1

Решение

Итак, я понял — когда вы делаете запрос AuthToken, вы получаете cookie со значением AuthToken, а когда вы пытаетесь создать новую учетную запись пользователя, вы должны отправить этот cookie обратно в раздел заголовка, например так:

Cookie: ZM_ADMIN_AUTH_TOKEN=0_69cd602eef3cf46bb488b02c6a173da698d17bdb_69643blablaTherestofmyauthtoken

Весь запрос должен выглядеть так:

$request= array(
'http' => array(
'method'  => 'POST',
'header'  => array(
'Content-Type: application/soap+xml',
'Cookie: ZM_ADMIN_AUTH_TOKEN=0_69cd602eef3cf46bb488b02c6a173da698d17bdb_69643blablaTherestofmyauthtoken',
),
'timeout'  => 20,
'ignore_errors' => true,
'content'  => '
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header xmlns="urn:zimbraAdmin">
<context>
<authToken> 0_69cd602eef3cf46bb488b02c6a173da698d17bdb_69643blablaTherestofmyauthtoken</authToken>
</context>
</soap:Header>
<soap:Body>
<CreateAccountRequest xmlns="urn:zimbraAdmin" name="[email protected]" password="john123!">
<a n="givenName">John</a>
<a n="sn">Doe</a>
<a n="displayName">John Doe</a>
</CreateAccountRequest>
</soap:Body>
</soap:Envelope>
',
),
);

Это объясняется в документация Требуется токен авторизации администратора, но он не говорит, что вы должны отправить его обратно через cookie в заголовке запроса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]