Exemplo de federação

O exemplo de Federação demonstra a segurança federada.

Detalhes da amostra

O Windows Communication Foundation (WCF) fornece suporte para a implantação de arquiteturas de segurança federadas 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 fio 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 de Livraria

  • Livraria STS

  • HomeRealm STS

  • Cliente Livraria

O serviço Livraria suporta duas operações, BrowseBooks e BuyBook. Permite o acesso anónimo BrowseBooks à operação, mas requer acesso autenticado para aceder à BuyBooks operação. A autenticação assume a forma de um token emitido pela Livraria STS. O arquivo de configuração para o Serviço de Livraria aponta os clientes para o STS da Livraria 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 STS da Livraria exige que os clientes se autentiquem usando um token emitido pelo STS HomeRealm. Novamente, o arquivo de configuração para o STS da Livraria aponta os clientes para o STS HomeRealm 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 é a BuyBook seguinte:

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

  2. O HomeRealm STS emite um token que pode ser usado para autenticar no STS da Livraria.

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

  4. O STS da Livraria emite um token que pode ser usado para autenticar no Serviço de Livraria.

  5. O cliente autentica-se no serviço da Livraria utilizando o token emitido pelo STS da Livraria.

  6. O cliente acessa a BuyBook operação.

Consulte as instruções a seguir sobre como configurar e executar este exemplo.

Nota

Você deve ter permissões de gravação para o 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 o exemplo e instala os certificados necessários com as permissões apropriadas.

    Nota

    O arquivo em lotes 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 Build Solution no menu Build . Isso cria os arquivos de projeto comuns, o serviço Bookstore, o Bookstore STS, o HomeRealm STS e os implanta no IIS. Isso também cria o aplicativo cliente Bookstore e coloca o BookStoreClient.exe executável 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 na lista e clique em Comprar livro. O aplicativo é iniciado e autenticado usando a autenticação do Windows com o Serviço de Token de Segurança HomeRealm.

    O exemplo é configurado 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 resulta no cliente recebendo uma mensagem de Acesso Negado do Serviço da Livraria.

    Nota

    O exemplo 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 Cleanup.bat. Isso exclui os diretórios virtuais que foram criados durante a configuração e também remove os certificados instalados durante a instalação.