Как настроить временную метку, созданную/истекающую в Rampart

Я использую Rampart в качестве модуля WS-Security поверх Axis2.

XML-файл моей политики приведен ниже:

<wsp:Policy wsu:Id="UsernameToken"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

<wsp:ExactlyOne>
    <wsp:All>
        <sp:TransportBinding
            xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
            <wsp:Policy>>
                <sp:IncludeTimestamp />
            </wsp:Policy>
        </sp:TransportBinding>
        <sp:SupportingTokens
            xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
            <wsp:Policy>
                <sp:UsernameToken
                    sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient" />
            </wsp:Policy>
        </sp:SupportingTokens>
    </wsp:All>
</wsp:ExactlyOne>

<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
    <ramp:passwordType>PasswordText</ramp:passwordType>
</ramp:RampartConfig>

It's working OK as shown in the below SOAP call:

  <soapenv:Header>
     <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
        <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1">
           <wsu:Created>2013-12-24T12:55:39.089Z</wsu:Created>
           <wsu:Expires>2013-12-24T13:00:39.089Z</wsu:Expires>
        </wsu:Timestamp>
        <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-2">
           <wsse:Username>username</wsse:Username>
           <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
        </wsse:UsernameToken>
     </wsse:Security>
  </soapenv:Header>

Что я хотел бы сделать, так это настроить значение Created, чтобы оно не обязательно было привязано к времени сервера, а также настроить продолжительность между Created и Expires.

Как я могу это сделать?


person SiN    schedule 24.12.2013    source источник


Ответы (2)


Итак, я отвечаю на свой вопрос.

Кажется, что нет смысла устанавливать разные временные метки, поскольку по стандартам временная метка должна отправляться в формате UTC.

Что касается TTL, то его можно настроить из файла policy.xml:

<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
  <ramp:timestampTTL>600</ramp:timestampTTL>
  <ramp:timestampMaxSkew>600</ramp:timestampMaxSkew>
<ramp:RampartConfig>

Я оставлю тему открытой на день или два, чтобы узнать, не захочет ли кто-нибудь еще высказать другое мнение.

person SiN    schedule 25.12.2013

Прямо сейчас у нас есть проблема, касающаяся продолжительности между датами создания и истечения срока действия. Похоже, что сообщение получено на сервере после истечения срока его действия, это связано с тем, что часы сервера и клиента имеют большую разницу (я имею в виду более 2 или 5 секунд) друг от друга. Обходной путь — увеличить

<ramp:timestampTTL>600</ramp:timestampTTL>
<ramp:timestampMaxSkew>600</ramp:timestampMaxSkew>

Это можно сделать с помощью методов rampartConfig.setTimestampTTL и rampartConfig.setTimestampmaxSkew на стороне клиента.

person user3750342    schedule 17.06.2014