Exemplo de federação
A amostra de Federação demonstra a segurança federada.
Detalhes de exemplo
O Windows Communication Foundation (WCF) oferece suporte para a implantação de arquiteturas de segurança federada por meio do wsFederationHttpBinding
. O wsFederationHttpBinding
fornece uma ligação segura, confiável e interoperável que envolve o uso de HTTP como o mecanismo de transporte subjacente para comunicação de solicitação/resposta e Texto/XML como o formato de conexão para codificação. Para obter mais informações sobre Federação no WCF, consulte Federação.
O cenário é composto por 4 peças:
Serviço BookStore
BookStore STS
HomeRealm STS
Cliente BookStore
O serviço BookStore oferece suporte a duas operações BrowseBooks
e BuyBook
. Ele permite acesso anônimo à operação BrowseBooks
, mas requer acesso autenticado para acessar a operação BuyBooks
. A autenticação assume a forma de um token emitido pela BookStore STS. O arquivo de configuração para o BookStore Service aponta os clientes para o BookStore STS usando o wsFederationHttpBinding
.
<wsFederationHttpBinding>
<!-- This is the Service binding for the BuyBooks endpoint. It redirects clients to the BookStore STS -->
<binding name='BuyBookBinding'>
<security mode="Message">
<message>
<issuerMetadata
address='http://localhost/FederationSample/BookStoreSTS/STS.svc/mex' >
<identity>
<dns value ='BookStoreSTS.com'/>
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
O BookStore STS então exige que os clientes autentiquem usando um token emitido pelo HomeRealm STS. Novamente, o arquivo de configuração para o BookStore STS aponta os clientes para o HomeRealm STS usando o wsFederationHttpBinding
.
<wsFederationHttpBinding>
<!-- This is the binding for the clients requesting tokens from this STS. It redirects clients to the HomeRealm STS -->
<binding name='BookStoreSTSBinding'>
<security mode='Message'>
<message>
<issuerMetadata
address='http://localhost/FederationSample/HomeRealmSTS/STS.svc/mex' >
<identity>
<dns value ='HomeRealmSTS.com' />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
A sequência de eventos ao acessar a operação BuyBook
é a seguinte:
O cliente se autentica no HomeRealm STS usando credenciais do Windows.
O HomeRealm STS emite um token que pode ser utilizado para autenticar no BookStore STS.
O cliente se autentica no BookStore STS usando o token emitido pelo HomeRealm STS.
O STS BookStore emite um token que pode ser usado para autenticar o Serviço BookStore.
O cliente se autentica no serviço BookStore usando o token emitido pelo BookStore STS.
O cliente acessa a operação
BuyBook
.
Consulte as instruções a seguir sobre como configurar e executar este exemplo.
Observação
Você deve ter permissões de gravação no diretório wwwroot para executar este exemplo.
Para configurar, compilar, e executar o exemplo
Abra a janela de comando do SDK. No caminho de exemplo, execute Setup.bat. Isso cria os diretórios virtuais necessários para a amostra e instala os certificados necessários com as permissões apropriadas.
Observação
O arquivo de lote Setup.bat foi projetado para ser executado a partir de um prompt de comando do SDK do Windows. Ele requer que a variável de ambiente MSSDK aponte para o diretório onde o SDK está instalado. Essa variável de ambiente é definida automaticamente em um Prompt de Comando do SDK do Windows. No Windows Vista, você deve garantir que a Compatibilidade de Gerenciamento do IIS 6.0 esteja instalada porque a configuração usa scripts de administrador do IIS. A execução do script de configuração no Windows Vista requer privilégios de administrador.
Abra FederationSample.sln no Visual Studio e selecione Criar solução no menu Criar. Isso cria os arquivos de projeto comuns, serviço Bookstore, Bookstore STS, HomeRealm STS e os implanta no IIS. Isso também cria o aplicativo cliente Bookstore e coloca o executável BookStoreClient.exe na pasta FederationSample\BookStoreClient\bin\Debug.
Clique duas vezes em BookStoreClient.exe. A janela BookStoreClient é exibida.
Você pode navegar pelos livros disponíveis na livraria clicando em Procurar livros.
Para comprar um livro específico, selecione o livro na lista e clique em Comprar livro. O aplicativo é inicializado e autenticado usando a autenticação do Windows com o HomeRealm Security Token Service.
A amostra está configurada para permitir que os usuários comprem livros que custam US$ 15 ou menos. A tentativa de comprar livros que custam mais de US$ 15 faz com que o cliente receba uma mensagem de acesso negado do serviço da livraria.
Observação
A amostra não atualiza o limite de crédito do usuário após uma compra. Você pode comprar livros repetidamente dentro do limite de crédito (fixo) do usuário.
Para limpar
Execute o Cleanup.bat. Isso exclui os diretórios virtuais que foram criados durante a configuração e também remove os certificados instalados durante a configuração.