Compartilhar via


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:

  1. O cliente se autentica no HomeRealm STS usando credenciais do Windows.

  2. O HomeRealm STS emite um token que pode ser utilizado para autenticar no BookStore STS.

  3. O cliente se autentica no BookStore STS usando o token emitido pelo HomeRealm STS.

  4. O STS BookStore emite um token que pode ser usado para autenticar o Serviço BookStore.

  5. O cliente se autentica no serviço BookStore usando o token emitido pelo BookStore STS.

  6. 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

  1. 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.

  2. 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.

  3. Clique duas vezes em BookStoreClient.exe. A janela BookStoreClient é exibida.

  4. Você pode navegar pelos livros disponíveis na livraria clicando em Procurar livros.

  5. 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.