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

1

Я хочу создать учетную запись пользователя 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>

И это работает, я возвращаю токен Auth.

Затем я пытаюсь создать новую учетную запись пользователя с этим запросом (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
                )

        )

)

Кто-нибудь может мне помочь? Благодаря..

Теги:
rest
soap
zimbra

1 ответ

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 в заголовке запроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню