<wsFederationHttpBinding>

Define uma associação que dá suporte a especificação Web Services Federation.

<configuração>
  <system.serviceModel>
    <bindings>
      <wsFederationHttpBinding>

Syntax

<wsFederationHttpBinding>
  <binding bypassProxyOnLocal="Boolean"
           closeTimeout="TimeSpan"
           hostNameComparisonMode="StrongWildcard/Exact/WeakWildcard"
           maxBufferPoolSize="integer"
           maxReceivedMessageSize="integer"
           messageEncoding="Text/Mtom"
           name="string"
           openTimeout="TimeSpan"
           privacyNoticeAt="Uri"
           privacyNoticeVersion="Integer"
           proxyAddress="Uri"
           receiveTimeout="TimeSpan"
           sendTimeout="TimeSpan"
           textEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/ Utf8TextEncoding"
           transactionFlow="Boolean"
           useDefaultWebProxy="Boolean">
    <security mode="None/Message/TransportWithMessageCredential">
      <message algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
               issuedTokenType="string"
               issuedKeyType="SymmetricKey/PublicKey"
               negotiateServiceCredential="Boolean">
        <claimTypeRequirements>
          <add claimType="URI"
               isOptional="Boolean" />
        </claimTypeRequirements>
        <issuer address="Uri" >
          <headers>
            <add name="String"
                 namespace="String" />
          </headers>
          <identity>
            <certificate encodedValue="String" />
            <certificateReference findValue="String"
                                  isChainIncluded="Boolean"
                                  storeName="AddressBook/AuthRoot/CertificateAuthority/Disallowed/My/Root/TrustedPeople/TrustedPublisher"
                                  storeLocation="LocalMachine/CurrentUser"
                                  X509FindType="System.Security.Cryptography.X509certificates.X509findtype" />
            <dns value="String" />
            <rsa value="String" />
            <servicePrincipalName value="String" />
            <usePrincipalName value="String" />
          </identity>
        </issuer>
        <issuerMetadata address="String">
          <headers>
            <add name="String"
                 namespace="String" />
          </headers>
          <identity>
            <certificate encodedValue="String" />
            <certificateReference findValue="String"
                                  isChainIncluded="Boolean"
                                  storeName="AddressBook/AuthRoot/CertificateAuthority/Disallowed/My/Root/TrustedPeople/TrustedPublisher"
                                  storeLocation="LocalMachine/CurrentUser"
                                  x509FindType="System.Security.Cryptography.X509certificates.X509findtype" />
            <dns value="String" />
            <rsa value="String" />
            <servicePrincipalName value="String" />
            <usePrincipalName value="String" />
          </identity>
        </issuerMetadata>
        <tokenRequestParameters>
          <xmlElement>
          </xmlElement>
        </tokenRequestParameters>
      </message>
    </security>
    <reliableSession ordered="Boolean"
                     inactivityTimeout="TimeSpan"
                     enabled="Boolean" />
    <readerQuotas maxArrayLength="Integer"
                  maxBytesPerRead="Integer"
                  maxDepth="Integer"
                  maxNameTableCharCount="Integer"
                  maxStringContentLength="Integer" />
  </binding>
</wsFederationHttpBinding>

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
bypassProxyOnLocal Um valor booliano que indica se o servidor proxy deve ser ignorado para endereços locais. O padrão é false.
closeTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de fechamento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
hostnameComparisonMode Especifica o modo de comparação de nome do host HTTP usado para analisar URIs. Esse atributo é do tipo HostNameComparisonMode, o que indica se o nome do host é usado para acessar o serviço ao fazer correspondência no URI. O valor padrão é StrongWildcard, o que ignora o nome do host na correspondência.
maxBufferPoolSize Um inteiro que especifica o tamanho máximo do pool de buffers para essa associação. O padrão é 524.288 bytes (512 * 1024). Muitas partes do WCF (Windows Communication Foundation) usam buffers. Criar e destruir buffers cada vez que eles são usados é caro, e a coleta de lixo para buffers também é cara. Com os pools de buffers, você pode pegar um buffer do pool, usá-lo e devolvê-lo ao pool assim que terminar. Portanto, a sobrecarga na criação e na destruição de buffers é evitada.
maxReceivedMessageSize Um inteiro positivo que especifica o tamanho máximo da mensagem, em bytes, incluindo cabeçalhos, que pode ser recebido em um canal configurado com essa associação. O remetente de uma mensagem que exceder esse limite receberá uma falha SOAP. O receptor remove a mensagem e cria uma entrada do evento no log de rastreamento. O padrão é 65536.
messageEncoding Define o codificador usado para codificar a mensagem. Os valores válidos incluem os seguintes:

– Texto: use um codificador de mensagens de texto.
– Mtom: use um codificador do MTOM (Message Transmission Organization Mechanism) 1.0.

O padrão é texto.

Esse atributo é do tipo WSMessageEncoding.
name Uma cadeia de caracteres que contém o nome de configuração da associação. Esse valor deve ser exclusivo, pois é usado como uma identificação para a associação. A partir do .NET Framework 4, associações e comportamentos não precisam ter um nome. Para obter mais informações sobre a configuração padrão e as associações sem nome, incluindo os comportamentos, confira Configuração Simplificada e Configuração Simplificada para Serviços WCF.
openTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de abertura. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
privacyNoticeAt Uma cadeia de caracteres que especifica um URI no qual o aviso de privacidade está localizado.
privacyNoticeVersion Um inteiro que especifica a versão do aviso de privacidade atual.
proxyAddress Um URI que especifica o endereço do proxy HTTP. Se useDefaultWebProxy for true, essa configuração precisará ser null. O padrão é null.
receiveTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de recebimento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:10:00.
sendTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de envio. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
textEncoding Define a codificação de conjunto de caracteres a ser usada para emitir mensagens na associação. Os valores válidos incluem os seguintes:

− BigEndianUnicode: codificação Unicode BigEndian.
– Unicode: codificação de 16 bits.
− UTF8: codificação de 8 bits

O padrão é UTF8. Esse atributo é do tipo Encoding.
transactionFlow Um valor booliano que especifica se a associação dá suporte ao fluxo de WS-Transactions. O padrão é false.
useDefaultWebProxy Um valor booliano que indica se o proxy HTTP configurado automaticamente do sistema é usado. O endereço proxy deve ser null (ou seja, não definido) se esse atributo for true. O padrão é true.

Elementos filho

Elemento Descrição
<security> Define as configurações de segurança da mensagem. Esse elemento é do tipo WSFederationHttpSecurityElement.
<readerQuotas> Define as restrições sobre a complexidade das mensagens SOAP que podem ser processadas pelos pontos de extremidade configurados com essa associação. Esse elemento é do tipo XmlDictionaryReaderQuotasElement.
<reliableSession> Especifica se sessões as confiáveis são estabelecidas entre pontos de extremidade de canal.

Elementos pai

Elemento Descrição
<bindings> Esse elemento contém uma coleção de associações padrão e personalizadas.

Comentários

Federação é a capacidade de compartilhar identidades em vário sistemas para autenticação e autorização. Essas identidades podem se referir a usuários ou computadores. O HTTP federado dá suporte à segurança SOAP, bem como à segurança de modo misto, mas não dá suporte exclusivo usando a segurança do transporte. Essa associação fornece suporte ao WCF (Windows Communication Foundation) para o protocolo de especificação Web Services Federation. Os serviços configurados com essa associação precisam usar o transporte HTTP.

As associações consistem em uma pilha de elementos de associação. A pilha dos elementos de associação em

wsFederationHttpBinding é o mesmo que o contido em wsHttpBinding

quando a <segurança> é definida como o valor padrão de Message.

Os controles wsFederationHttpBinding dos detalhes das configurações de segurança da mensagem na <mensagem>. Observe que o elemento de <segurança> fornece acesso somente como a segurança usada pela associação não pode ser alterada depois que a associação é criada.

O wsFederationHttpBinding também fornece um atributo privacyNoticeAt para definir e recuperar o URI no qual o aviso de privacidade está localizado.

Manter a política segura é especialmente importante nos cenários de federação. A recomendação é usar alguma forma de segurança, como HTTPS, para proteger a política contra usuários mal-intencionados.

Em cenários de federação que usam essa associação, a política de serviço potencialmente tem informações importantes, como a chave a ser usada para criptografar o token SAML emitido, o tipo de declarações a serem colocadas no token e assim por diante. Se essa política for adulterada, um invasor poderá descobrir a chave do token emitido, levando a mais violações, divulgação de informações e outros comportamentos mal-intencionados. Para ajudar a evitar isso, a política deve ser obtida de modo seguro (por exemplo, usando HTTPS) do serviço.

Para obter mais informações sobre essa associação, confira Como criar um WSFederationHttpBinding.

Exemplo

<configuration>
  <system.ServiceModel>
    <bindings>
      <wsFederationHttpBinding>
        <binding bypassProxyOnLocal="false"
                 transactionFlow="false"
                 hostNameComparisonMode="WeakWildcard"
                 maxReceivedMessageSize="1000"
                 messageEncoding="Mtom"
                 proxyAddress="http://foo/bar"
                 textEncoding="Utf16TextEncoding"
                 useDefaultWebProxy="false">
          <reliableSession ordered="false"
                           inactivityTimeout="00:02:00"
                           enabled="true" />
          <security mode="None">
            <message negotiateServiceCredential="false"
                     algorithmSuite="Aes128"
                     issuedTokenType="saml"
                     issuedKeyType="PublicKey">
              <issuer address="http://localhost/Sts" />
            </message>
          </security>
        </binding>
      </wsFederationHttpBinding>
    </bindings>
  </system.ServiceModel>
</configuration>

Confira também