Канал WCF от CreateChannelWithIssuedToken все еще отправляет запрос 'requestsecuritytoken'

Используя.Net 4.5 и сгенерировал токен SAML2, используя классы идентификации WIF, и пытался добавить его в запрос тела мыла, но его игнорирование и сгенерированный запрос мыла фактически имеют запрос мыла "requestsecuritytoken", который отправляется на сервер. У меня нет никаких СС.

Ссылочный код здесь " Требуется подпись после токена SAML в клиентском запросе", кажется, работает.

Моя привязка в app.config

        <customBinding>
          <binding name="AccountDetailsServiceSoap11" >
            <textMessageEncoding messageVersion="Soap11WSAddressing10"/>
            <security includeTimestamp="true">
            </security>
            <httpTransport></httpTransport>
          </binding>
   </customBinding>

И сгенерированный мыльный конверт

    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action><a:MessageID>urn:uuid:b7ff68ac-df62-4051-a68a-7382b0ec4995</a:MessageID><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand="1">http://localhost:8888/spring-webservices-sample/endpoints</a:To></s:Header><s:Body><t:RequestSecurityToken Context="uuid-f4007218-af5c-4f84-b800-0e47f102d3b5-1" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust"><t:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</t:TokenType><t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType><t:KeySize>256</t:KeySize><t:BinaryExchange ValueType="http://schemas.xmlsoap.org/ws/2005/02/trust/spnego" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">YHoGBisGAQUFAqBwMG6gMDAuBgorBgEEAYI3AgIKBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHqI6BDhOVExNU1NQAAEAAAC3shjiCQAJAC8AAAAHAAcAKAAAAAYBsR0AAAAPQUEzNzMwOUNJTkNPTVNZUw==</t:BinaryExchange></t:RequestSecurityToken></s:Body></s:Envelope>

Я хочу протестировать защищенный веб-сервис с SAML, который есть у нас в Java, от клиента.net. Я получил сервисный клиент, сгенерированный из WSDL в visual studio 2015, а затем получил утверждение SAML, сгенерированное из классов, и теперь пытаюсь передать этот токен с запросом мыла в сервис java.

Кто-нибудь может поделиться тем, что я упускаю или делаю неправильно, я новичок в мире.net/WCF/WIF?

Спасибо

1 ответ

Проведя еще несколько исследований, выяснилось, что инфраструктура WCF при наличии "пользовательской привязки" на стороне клиента WCF сначала генерирует запрос RST(requestsecuritytoken) в фоновом режиме и еще не нашла, можем ли мы изменить это поведение. Поэтому вместо этого использовался "basicHTTPBinding" с параметром подписи (с уровнем защиты на интерфейсе клиента, установленным для подписи), который теперь подписывает тело мыла и помещает timestamnp.
Теперь для вставки токена SAML2 использовали перехватчик и добавляли его после того, как сгенерировали его из классов WIF и отправили окончательный запрос мыла с подписанным утверждением SAML, отметкой времени и телом мыла. Запрос был обработан на стороне Spring WS с действиями по обеспечению безопасности и была вызвана бизнес-логика. Это только для разработки и тестирования. Я предполагаю, что для производства нам все еще нужно иметь STS.

Другие вопросы по тегам