首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zimbra创建帐户

Zimbra创建帐户
EN

Stack Overflow用户
提问于 2015-12-10 14:17:34
回答 1查看 2.6K关注 0票数 2

我想用GetAccountRequest,创建SOAP 的用户帐户,但无法让它工作--这很奇怪,因为我可以获得AuthToken,甚至可以通过请求查看已经创建的帐户的信息(通过管理面板),但是帐户的创建不起作用。

下面是AuthToken (POST)请求的代码:

代码语言:javascript
复制
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">my.name@mydomain.com</account> 
    </AuthRequest>
  </soap:Body>
</soap:Envelope>

这是可行的,我把Auth令牌拿回来了。

接下来,我尝试使用以下(POST)请求创建新的用户帐户:

代码语言:javascript
复制
<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="john.doe@mydomain.com" password="john123!"> 
        <a n="givenName">John</a>
        <a n="sn">Doe</a>
        <a n="displayName">John Doe</a>
    </CreateAccountRequest>
  </soap:Body>
</soap:Envelope>

这就是我得到的回应:

代码语言:javascript
复制
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
                )

        )

)

有人能帮我吗?谢谢..

EN

回答 1

Stack Overflow用户

发布于 2015-12-14 16:00:05

因此,我想出了答案--当您发出一个AuthToken请求时,您会收到一个带有AuthToken值的cookie,当您尝试创建一个新的用户帐户时,您必须将该cookie发送回header部分,如下所示:

代码语言:javascript
复制
Cookie: ZM_ADMIN_AUTH_TOKEN=0_69cd602eef3cf46bb488b02c6a173da698d17bdb_69643blablaTherestofmyauthtoken

整个请求必须如下所示:

代码语言:javascript
复制
$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="john.doe@mydomain.com" password="john123!"> 
                        <a n="givenName">John</a>
                        <a n="sn">Doe</a>
                        <a n="displayName">John Doe</a>
                    </CreateAccountRequest>
                </soap:Body>
            </soap:Envelope>
        ',
    ),
);

它在文档中得到了解释--管理授权令牌是必需的,但它并没有说明您必须通过请求头中的cookie将其发回任何地方。

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

https://stackoverflow.com/questions/34204181

复制
相关文章

相似问题

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