STSClient Ошибка при проверке безопасности сообщения - PullRequest
0 голосов
/ 03 апреля 2020

Я уже просматривал

Произошла ошибка при проверке безопасности сообщения - токен SAML и Как вставить токен SAML непосредственно в службу JAX-WS без вызова STSClient

Я также работаю в сфере образования в Австралии. Сейчас я тоже борюсь с сервисом STS v3. Я использую cxf и wsdl2 java

<jaxws:client name="{http://usi.gov.au/2018/ws/servicepolicy}WS2007FederationHttpBinding_IUSIService" createdFromAPI="true">
<jaxws:inInterceptors>
    <ref bean="unexpectedResponseNodeInterceptor"/>
</jaxws:inInterceptors>
<jaxws:properties>
    <entry key="ws-security.sts.client">
        <bean class="org.apache.cxf.ws.security.trust.STSClient">
        <constructor-arg ref="usiClientBus"/>
            <property name="wsdlLocation" value="https://softwareauthorisations.ato.gov.au/R3.0/S007v1.3/service.svc"/>
            <property name="serviceName" value="{http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice}SecurityTokenService"/>
            <property name="endpointName" value="{http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice}S007SecurityTokenServiceEndpoint"/>
            <property name="properties">
                <map>
                    <entry key="ws-security.sts.client-soap12-binding" value="true"/>
                    <entry key="ws-security.signature.crypto" value-ref="ausKeyCryptoService"/>
                    <entry key="ws-security.callback-handler" value-ref="ausKeyCryptoService"/>


                </map>
            </property>
        </bean>
    </entry>
    <entry key="ws-security.cache.issued.token.in.endpoint" value="false"/>
</jaxws:properties>

Первоначальная ошибка, с которой я столкнулся: «E9004 Обнаружена ошибка при обработке заголовка wsse: Security». Эта ошибка, документированная в MTS-ST, делает c https://softwaredevelopers.ato.gov.au/sites/default/files/resource-attachments/MAS-ST_SecurityTokenService_ServiceDefinition.pdf

Но их объяснение действительно бесполезно.

тогда я указал STSClient на локальный файл wsdl, например

и измените AlgorithmSuite, как рекомендовано в комментариях выше. Я сделал то же самое для USI WSDL. Ошибка, которую я получаю сейчас: An error occurred when verifying security for the message. Я даже не знаю, лучше это (некоторый прогресс) или хуже (просто сделайте шаг назад).

Я просмотрел soap Сообщение конверта, оно содержит:

<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>

Я предполагаю, что алгоритм sha1 является причиной моей ошибки. Но это атрибут моего сертификата, как я понял.

Я также пробовал примеры кода, которые предоставляет MAS-ST: он использует проприетарную реализацию ABR_SecurityTokenManager.jar и Metro ws. Я не знаю как, но это работает (по крайней мере 1 шаг получения токена безопасности со стороны MAS-ST). Я проверил soap Envelop, а также был удивлен, у меня есть

<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256"/>

, но сертификат такой же, как в моем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...