Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O exemplo WS2007FederationHttp demonstra o uso de WS2007FederationHttpBinding, uma associação padrão que você pode usar para criar cenários federados que suportam a versão 1.3 da especificação WS-Trust.
Observação
O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.
O exemplo consiste em um programa cliente baseado em console (Client.exe), um programa de serviço de token de segurança baseado em console (Securitytokenservice.exe) e um programa de serviço baseado em console (Service.exe). O serviço implementa um contrato que define um padrão de comunicação solicitação/resposta. O contrato é definido pela ICalculator interface, que expõe operações matemáticas (Add, Subtract, Multiply, e Divide). O cliente obtém um token de segurança do Serviço de Token de Segurança (STS) e faz solicitações síncronas ao serviço para uma determinada operação matemática. Em seguida, o serviço responde com o resultado. A atividade do cliente é visível na janela do console.
A amostra disponibiliza o contrato ICalculator usando o elemento ws2007FederationHttpBinding. A configuração dessa ligação no cliente é mostrada no código a seguir:
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Endpoint address and binding for Security Token Service -->
<issuer address ="http://localhost:8000/sts/windows"
binding ="ws2007HttpBinding" />
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
<No tema de segurança>, o security valor especifica qual modo de segurança deve ser utilizado. Neste exemplo, message a segurança é usada, por isso a <mensagem> é especificada dentro da <segurança>. O <elemento emissor> dentro da <mensagem> especifica o endereço e a associação para o STS que emite um token de segurança para o cliente para que o cliente possa se autenticar no ICalculator serviço.
A configuração dessa ligação no serviço é mostrada no código a seguir:
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Metadata address for Security Token Service -->
<issuerMetadata address ="http://localhost:8000/sts/mex" >
<identity>
<certificateReference storeLocation ="CurrentUser"
storeName="TrustedPeople"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=STS" />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
<No tema de segurança>, o security valor especifica qual modo de segurança deve ser utilizado. Neste exemplo, message a segurança é usada, por isso a <mensagem> é especificada dentro da <segurança>. O <elemento issuerMetadata> dentro da ws2007FederationHttpBinding especifica o endereço e a identidade de um ponto de extremidade, que pode ser usado para recuperar os metadados do STS.
O comportamento para o serviço é mostrado no seguinte código:
<behaviors>
<serviceBehaviors>
<behavior name ="ServiceBehaviour" >
<serviceDebug includeExceptionDetailInFaults ="true"/>
<serviceMetadata httpGetEnabled ="true"/>
<serviceCredentials>
<issuedTokenAuthentication>
<knownCertificates>
<add storeLocation ="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindBySubjectDistinguishedName"
findValue="CN=STS" />
</knownCertificates>
</issuedTokenAuthentication>
<serviceCertificate storeLocation ="LocalMachine"
storeName ="My"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=localhost"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
O <issuedTokenAuthentication>> permite que o serviço especifique restrições nos tokens que permite que os clientes apresentem durante a autenticação. Essa configuração especifica que os tokens assinados por um certificado cujo nome de assunto é CN=STS são aceitos pelo serviço.
O STS disponibiliza um único ponto de extremidade usando o padrão WS2007HttpBinding. O serviço responde a solicitações de clientes para tokens. Se o cliente for autenticado usando uma conta do Windows, o serviço emitirá um token que contém o nome de usuário do cliente como uma declaração. Como parte da criação do token, o STS assina o token usando a chave privada associada ao certificado CN=STS. Além disso, ele cria uma chave simétrica e a criptografa usando a chave pública associada ao certificado CN=localhost. Ao retornar o token para o cliente, o STS também retorna a chave simétrica. O cliente apresenta o token emitido ao ICalculator serviço e prova que conhece a chave simétrica assinando a mensagem com essa chave.
Quando você executa o exemplo, a solicitação para o token de segurança é mostrada na janela do console STS. As solicitações e respostas da operação são exibidas nas janelas do cliente e do console de serviço. Pressione ENTER em qualquer uma das janelas do console para desligar o aplicativo.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
O arquivo Setup.bat incluído neste exemplo permite configurar o servidor e o STS com os certificados relevantes para executar um aplicativo auto-hospedado. O ficheiro de lotes cria dois certificados no repositório de certificados LocalMachine/TrustedPeople. O primeiro certificado tem um nome de assunto CN=STS e é usado pelo STS para assinar os tokens de segurança que ele emite para o cliente. O segundo certificado tem um nome de assunto CN=localhost e é usado pelo STS para criptografar uma chave de uma forma que o serviço possa descriptografar.
Para configurar, compilar e executar o exemplo
Verifique se você executou o procedimento de instalação do One-Time para os exemplos do Windows Communication Foundation.
Abra um prompt de comando do desenvolvedor para Visual Studio com privilégios de administrador e execute o arquivo Setup.bat para criar os certificados necessários.
Esse arquivo em lotes usa Certmgr.exe e Makecert.exe, que são distribuídos com o SDK do Windows. No entanto, você deve executar Setup.bat de dentro de um prompt de comando do Visual Studio para habilitar o script para localizar essas ferramentas.
Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.
Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Executando os exemplos do Windows Communication Foundation. Se estiver a utilizar o Windows Vista, tem de executar Service.exe, Client.exee SecurityTokenService.exe com privilégios elevados (clique com o botão direito do rato nos ficheiros e, em seguida, clique em Executar como administrador).