<wsFederationHttpBinding>

Define um enlace que suporta WS-Federation.

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

Sintaxe

<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 secções seguintes descrevem atributos, elementos subordinados e elementos principais.

Atributos

Atributo Descrição
bypassProxyOnLocal Um valor booleano que indica se deve ignorar o servidor proxy para endereços locais. A predefinição é false.
closeTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de fecho. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
hostnameComparisonMode Especifica o modo de comparação de nomes de anfitrião HTTP utilizado para analisar URIs. Este atributo é do tipo HostNameComparisonMode, que indica se o nome do anfitrião é utilizado para aceder ao serviço quando corresponde ao URI. O valor predefinido é StrongWildcard, que ignora o nome do anfitrião na correspondência.
maxBufferPoolSize Um número inteiro que especifica o tamanho máximo do conjunto de memória intermédia para este enlace. A predefinição é 524.288 bytes (512 * 1024). Muitas partes do Windows Communication Foundation (WCF) utilizam memórias intermédias. A criação e destruição de memórias intermédias sempre que são utilizadas é dispendiosa e a libertação da memória intermédia também é dispendiosa. Com os conjuntos de memória intermédia, pode tirar uma memória intermédia do conjunto, utilizá-la e devolvê-la ao conjunto assim que terminar. Assim, evita-se a sobrecarga na criação e destruição de memórias intermédias.
maxReceivedMessageSize Um número inteiro positivo que especifica o tamanho máximo da mensagem, em bytes, incluindo cabeçalhos, que pode ser recebido num canal configurado com este enlace. O remetente de uma mensagem que excede este limite receberá uma falha SOAP. O recetor remove a mensagem e cria uma entrada do evento no registo de rastreio. A predefinição é 65536.
messageEncoding Define o codificador utilizado para codificar a mensagem. Os valores válidos incluem o seguinte:

- Texto: utilize um codificador de mensagens sms.
- Mtom: utilize um codificador MTOM (Message Transmission Organization Mechanism 1.0).

A predefinição é Texto.

Este atributo é do tipo WSMessageEncoding.
name Uma cadeia que contém o nome de configuração do enlace. Este valor deve ser exclusivo porque é utilizado como uma identificação para o enlace. A partir do .NET Framework 4, os enlaces e comportamentos não têm de ter um nome. Para obter mais informações sobre a configuração predefinida e os enlaces e comportamentos sem nome, veja Configuração Simplificada e Configuração Simplificada para os Serviços WCF.
openTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação aberta. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
privacyNoticeAt Uma Cadeia que especifica um URI no qual o aviso de privacidade está localizado.
privacyNoticeVersion Um número 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, esta definição tem de ser null. A predefinição é null.
receiveTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de receção. Este valor deve ser maior ou igual a Zero. A predefinição é 00:10:00.
sendTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de envio. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
textEncoding Define a codificação do conjunto de carateres a utilizar para emitir mensagens no enlace. Os valores válidos incluem o seguinte:

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

A predefinição é UTF8. Este atributo é do tipo Encoding..
transactionFlow Um valor booleano que especifica se o enlace suporta WS-Transactions em fluxo. A predefinição é false.
useDefaultWebProxy Um valor booleano que indica se o proxy HTTP configurado automaticamente do sistema é utilizado. O endereço proxy tem de ser null (ou seja, não definido) se este atributo for true. A predefinição é true.

Elementos Subordinados

Elemento Descrição
<segurança> Define as definições de segurança da mensagem. Este elemento é do tipo WSFederationHttpSecurityElement.
<readerQuotas> Define as restrições sobre a complexidade das mensagens SOAP que podem ser processadas por pontos finais configurados com este enlace. Este elemento é do tipo XmlDictionaryReaderQuotasElement.
<reliableSession> Especifica se são estabelecidas sessões fiáveis entre pontos finais de canal.

Elementos Principais

Elemento Descrição
<enlaces> Este elemento contém uma coleção de enlaces padrão e personalizados.

Observações

A federação é a capacidade de partilhar identidades em vários sistemas para autenticação e autorização. Estas identidades podem referir-se a utilizadores ou a computadores. O HTTP federado suporta segurança SOAP, bem como segurança de modo misto, mas não suporta exclusivamente a segurança de transporte. Este enlace fornece suporte do Windows Communication Foundation (WCF) para o protocolo WS-Federation. Os serviços configurados com este enlace têm de utilizar o transporte HTTP.

Os enlaces consistem numa pilha de elementos de enlace. A pilha de elementos de enlace no

wsFederationHttpBinding é o mesmo que o contido em wsHttpBinding

quando <a segurança> está definida para o valor predefinido de Message.

O wsFederationHttpBinding controla os detalhes das definições de segurança da mensagem na <mensagem>. Tenha em atenção que o <elemento de segurança> fornece acesso apenas porque a segurança utilizada pelo enlace não pode ser alterada depois de o enlace ser criado.

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

Manter a política segura é especialmente importante em cenários de federação. A recomendação é utilizar alguma forma de segurança, como HTTPS, para proteger a política de utilizadores maliciosos.

Nos cenários de federação que utilizam este enlace, a política de serviço tem potencialmente informações importantes, como a chave a utilizar para encriptar o token (SAML) emitido, o tipo de afirmações a colocar no token, etc. Se esta política for adulterada, um atacante poderá detetar a chave do token emitido que leva a uma maior adulteração, divulgação de informações e outro comportamento malicioso. Para ajudar a evitar esta situação, a política tem de ser obtida de forma segura (por exemplo, com HTTPS) do serviço.

Para obter mais informações sobre este enlace, veja 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>

Veja também