Sabre Webservice 使用 SoapUI 5.2.0 创建会话

问题描述

我正在尝试使用 SessionCreateRQ 获取令牌,然后在 Sabre Production 中进行会话,但收到错误“无效或过期的二进制安全令牌”。

端点:https://webservices.havail.sabre.com/websvchttps://sws-crt.cert.havail.sabre.com

我有一个 EPR,它同时适用于 Prod 和 cert,但认为 Prod。

请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sec="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:mes="http://www.ebxml.org/namespaces/messageHeader" xmlns:web="http://webservices.sabre.com">
   <soapenv:Header>
      <sec:Security>
         <!--Optional:-->
         <sec:Usernametoken>
            <!--Optional:-->
            <sec:Username>*****</sec:Username>
            <!--Optional:-->
            <sec:Password>*******</sec:Password>
            <!--0 to 2 repetitions:-->
            <sec:NewPassword>******</sec:NewPassword>
            <!--Optional:-->
            <Organization>IPCC</Organization>
            <!--Optional:-->
            <Domain></Domain>
         </sec:Usernametoken>
         <!--Optional:-->
         <sec:SabreAth>?</sec:SabreAth>
         <!--Optional:-->
         <sec:BinarySecurityToken>?</sec:BinarySecurityToken>
      </sec:Security>
      <mes:MessageHeader mes:id="?" mes:version="?">
         <mes:From>
            <!--1 or more repetitions:-->
            <mes:PartyId mes:type="?">?</mes:PartyId>
            <!--Optional:-->
            <mes:Role>?</mes:Role>
         </mes:From>
         <mes:To>
            <!--1 or more repetitions:-->
            <mes:PartyId mes:type="?">?</mes:PartyId>
            <!--Optional:-->
            <mes:Role>?</mes:Role>
         </mes:To>
         <mes:CPAId>?</mes:CPAId>
         <mes:ConversationId>?</mes:ConversationId>
         <mes:Service mes:type="?">TokenCreateRQ</mes:Service>
         <mes:Action>TokenCreateRQ</mes:Action>
         <mes:MessageData>
            <mes:MessageId>?</mes:MessageId>
            <mes:Timestamp>?</mes:Timestamp>
            <!--Optional:-->
            <mes:RefToMessageId>?</mes:RefToMessageId>
            <!--Optional:-->
            <mes:TimetoLive>?</mes:TimetoLive>
            <!--Optional:-->
            <mes:Timeout>3000</mes:Timeout>
         </mes:MessageData>
         <!--Optional:-->
         <mes:DuplicateElimination>?</mes:DuplicateElimination>
         <!--Zero or more repetitions:-->
         <mes:Description xml:lang="?">?</mes:Description>
         <!--You may enter ANY elements at this point-->
      </mes:MessageHeader>
   </soapenv:Header>
   <soapenv:Body>
      <web:TokenCreateRQ Version="?"/>
   </soapenv:Body>
</soapenv:Envelope>

回复

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
   <soap-env:Header>
      <eb:MessageHeader eb:version="1.0" soap-env:mustUnderstand="1" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader">
         <eb:From>
            <eb:PartyId eb:type="?">?</eb:PartyId>
         </eb:From>
         <eb:To>
            <eb:PartyId eb:type="?">?</eb:PartyId>
         </eb:To>
         <eb:CPAId>?</eb:CPAId>
         <eb:ConversationId>?</eb:ConversationId>
         <eb:Service eb:type="?">TokenCreateRQ</eb:Service>
         <eb:Action>ErrorRS</eb:Action>
         <eb:MessageData>
            <eb:MessageId>1467037801397820233</eb:MessageId>
            <eb:Timestamp>2021-02-17T22:15:39</eb:Timestamp>
            <eb:RefToMessageId>?</eb:RefToMessageId>
         </eb:MessageData>
      </eb:MessageHeader>
      <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
         <wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">?</wsse:BinarySecurityToken>
      </wsse:Security>
   </soap-env:Header>
   <soap-env:Body>
      <soap-env:Fault>
         <faultcode>soap-env:Client.InvalidSecurityToken</faultcode>
         <faultstring>Invalid or Expired binary security token: ?</faultstring>
         <detail>
            <StackTrace>com.sabre.universalservices.base.session.SessionException: errors.session.USG_INVALID_Security_TOKEN</StackTrace>
         </detail>
      </soap-env:Fault>
   </soap-env:Body>
</soap-env:Envelope>

请帮我看看这里有什么问题?我知道我的 EPR 工作正常。

解决方法

您可以将此代码段用于 TokenCreateRQ

https://developer.sabre.com/docs/soap_apis/session_management/create_access_token

<soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:sec="http://schemas.xmlsoap.org/ws/2002/12/secext" 
xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" 
xmlns:web="http://webservices.sabre.com">
   <soapenv:Header>
      <sec:Security>
         <!--Optional:-->
         <sec:UsernameToken>
            <sec:Username>${#Project#Username}</sec:Username>
            <sec:Password>${#Project#Password}</sec:Password>
            <Organization>${#Project#Organization}</Organization>
            <Domain>${#Project#Domain}</Domain>
         </sec:UsernameToken>
      </sec:Security>
      <eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1">
            <eb:From>
                <eb:PartyId>Client</eb:PartyId>
            </eb:From>
            <eb:To>
                <eb:PartyId>SWS</eb:PartyId>
            </eb:To>
            <eb:CPAId>${#Project#Organization}</eb:CPAId>
            <eb:ConversationId>1234</eb:ConversationId>
            <eb:Service>Session</eb:Service>
            <eb:Action>TokenCreateRQ</eb:Action>
            <eb:MessageData>
                <eb:MessageId>1234</eb:MessageId>
                <eb:Timestamp>2015-01-01T00:00:00</eb:Timestamp>
            </eb:MessageData>
        </eb:MessageHeader>
   </soapenv:Header>
   <soapenv:Body>
      <web:TokenCreateRQ Version="2.0.0"/>
   </soapenv:Body>
</soapenv:Envelope>

HTH