svcutil игнорирует утверждения WS-Trust - PullRequest
1 голос
/ 21 февраля 2011

Сценарий: я пишу клиент WCF для доступа к веб-сервису Java / Metro, который требует аутентификации через токен, полученный из STS (также Java / Metro). Соответствующий фрагмент политики из WSDL службы:

<sp:IssuedToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
  <sp:Issuer>
    <wsa:Address>...</wsa:Address>
    <Metadata xmlns="http://www.w3.org/2005/08/addressing">
      <Metadata xmlns="http://schemas.xmlsoap.org/ws/2004/09/mex">
        <MetadataSection>
          <MetadataReference>
            <Address xmlns="http://www.w3.org/2005/08/addressing">...</Address>
          </MetadataReference>
        </MetadataSection>
      </Metadata>
    </Metadata>
  </sp:Issuer>
  <t:Claims Dialect="http://schemas.xmlsoap.org/ws/2005/05/identity">
    <ClaimType xmlns="http://schemas.xmlsoap.org/ws/2005/05/identity" Optional="false" Uri="..."/>
    <ClaimType xmlns="http://schemas.xmlsoap.org/ws/2005/05/identity" Optional="false" Uri="..."/>
  </t:Claims>
  <sp:RequestSecurityTokenTemplate>
    <t:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey</t:KeyType>
    <t:KeySize>256</t:KeySize>
  </sp:RequestSecurityTokenTemplate>
  <wsp:Policy>
    <sp:RequireDerivedKeys/>
    <sp:RequireInternalReference/>
  </wsp:Policy>
</sp:IssuedToken>

Обратите внимание на <Claims> часть вне * <RequestSecurityTokenTemplate>, как определено в WS-SecurityPolicy 1.2 (это изменилось по сравнению с предыдущей версией, где <Claims> был помещен внутри).

При таком размещении svcutil полностью игнорирует <Claims>. При размещении в шаблоне RST они копируются в сгенерированный конфиг:

<binding ...>
  <security ...>
    <issuedTokenParameters ...>
      <additionalRequestParameters>
        <!-- The RST template is copied here -->
      </additionalRequestParameters>
      ...
    </issuedTokenParameters>
  </security>
  ...
</binding>

WCF утверждает (не каламбур) для поддержки WS-SecurityPolicy 1.2 , так что мне интересно - это ошибка по замыслу? ИМХО, утверждения из политики должны всегда появляться в <additionalRequestParameters> конфигурации привязки.

1 Ответ

0 голосов
/ 06 июля 2011

Служба поддержки Microsoft подтвердила мне, что это ошибка в .NET 4.0, и исправление планируется в следующей версии.

...