Exemplo de código: ASP.NET página de logon personalizado do MVC 3
Atualizado: 19 de junho de 2015
Aplica-se ao Azure
Este exemplo ilustra como criar um logon personalizado ou página descoberta de realm inicial em um aplicativo ASP.NET MVC3 que usa Microsoft Azure Active Directory Controle de Acesso (também conhecido como Serviço Controle de Acesso ou ACS). O código deste exemplo está localizado no subdiretório MVC3CustomSignInPage (C#\Websites\MVC3CustomSignInPage) do pacote de exemplos de código Microsoft Azure Active Directory Controle de Acesso (ACS).
Pré-requisitos
Para executar esta amostra, você precisará do seguinte:
Uma conta no portal do Azure e um namespace Controle de Acesso.
Visual Studio 2010 (qualquer versão)
Windows Identity Foundation SDK
Para obter mais detalhes, consulte os pré-requisitos do ACS (https://go.microsoft.com/fwlink/?LinkId=221065).
Configurando o exemplo
A configuração acs necessária para este exemplo pode ser executada usando o Portal de Gerenciamento do ACS ou o Serviço de Gerenciamento do ACS. Este tópico descreve duas opções.
Opção 1: Configurando o exemplo por meio do Portal de Gerenciamento do ACS
Para configurar o exemplo no Portal de Gerenciamento ACS
Acesse o Portal de Gerenciamento de Microsoft Azure (https://manage.WindowsAzure.com), entre e clique no Active Directory. (Dica de solução de problemas: o item "Active Directory" está ausente ou não está disponível)
Para criar um namespace do Access Control clique em Novo, clique em Serviços de Aplicativo, clique em Access Control, e depois em Criação Rápida. (Or, clique em Namespaces do Access Control antes de clicar em Novo.)
Para gerenciar um namespace do Access Control, selecione o namespace e clique em Gerenciar. (Or, clique em Namespaces do Access Control, selecione o namespace e clique em Gerenciar.)
Essa ação abre o portal de gerenciamento do Serviço de Controle de Acesso.
Para estabelecer relacionamentos com os provedores de identidade, clique em Provedores de identidade e depois selecione os provedores de identidade que você gostaria de usar, como Google, Yahoo! e Facebook. Para obter mais informações sobre como obter as chaves de pré-requisito para o Facebook, consulte How To: Configure Facebook as an Identity Provider (https://go.microsoft.com/fwlink/?LinkId=221151). Depois clique no link da Página inicial no menu de navegação do lado esquerdo da página para voltar para a página principal.
Para registrar seu aplicativo no ACS, no portal de gerenciamento do serviço Controle de Acesso, clique no link de aplicativos de terceira parte confiável localizado na página principal, selecione Adicionar e insira as seguintes informações no formulário:
No campo Nome, insira ASPNET MVC3 Custom.
No campo Realm , insira https://localhost:64000/
No campo URL de Retorno , insira https://localhost:64000/Account/SignIn
No campo Formato do token, selecione SAML 2.0.
Na seção Provedores de identidade, selecione Facebook, Google, Windows Live ID e Yahoo!
No campo Autenticação de token, selecione Utilizar certificado do namespace de serviço (padrão).
Clique em Salvar e depois navegue de volta para a página principal.
Com seu aplicativo de terceira parte confiável configurado, agora é hora de criar as regras que determinam as declarações que o ACS emitirá ao seu aplicativo. Neste exemplo, mostraremos todas as declarações enviadas pelos provedores de identidade. Para criar esta regra, clique em Grupos de Regras, na página principal, e clique no grupo de regra Grupo de regra padrão para ASPNET MVC3.
Na parte inferior da página, clique no link Gerar. Verifique se o Facebook, o Yahoo e estão selecionados e clique em Gerar.
Com o ACS configurado, abra Visual Studio.
Opção 2: configurar o exemplo usando o serviço de gerenciamento acs
A solução de exemplo Visual Studio tem um aplicativo de linha de comando chamado ConfigureSample que usa o Serviço de Gerenciamento do ACS e os auxiliares comuns definidos na biblioteca de classes Comum. Esse aplicativo pode ser usado para configurar seu namespace Controle de Acesso para uso com este exemplo.
Para configurar o exemplo usando o Serviço de Gerenciamento do ACS
Atualize a biblioteca de classes comum com informações sobre seu namespace Controle de Acesso. Abra SamplesConfiguration.cs e insira as informações a seguir:
ServiceNamespace - Este é o namespace usado com ACS.
ManagementServiceIdentityName – Este é um nome da conta do serviço de gerenciamento.
ManagementServiceIdentityKey – Esta é a senha associada à conta do serviço de gerenciamento.
AcsHostUrl - Este é o nome do host do ACS.
No projeto ConfigureSample, abra Program.cs e insira as informações a seguir:
applicationId – Esta é a ID do aplicativo Facebook.
applicationSecret – É o segredo do aplicativo Facebook.
Para obter detalhes sobre como obter essas chaves, consulte How To: Configure Facebook as an Identity Provider (https://go.microsoft.com/fwlink/?LinkId=221151).
Execute o aplicativo ConfigureSample no Visual Studio, que configurará o ACS para executar este exemplo.
Executando o exemplo
Para executar a amostra
Abra o exemplo localizado em Websites\MVC3CustomSignInPage\MVC3CustomSignInPage.sln em Visual Studio.
Para adicionar o ACS como referência do STS, clique com o botão direito do mouse em MVCCustomSignInPage e selecione Adicionar Referência sts no menu de contexto.
Na caixa de diálogo, insira a raiz do aplicativo Web no campo URI do aplicativo e clique em Avançar. Para este exemplo, esse valor é https://localhost:64000/
Observação
A barra à direita é importante, pois se alinha com os valores que você inseriu no ACS para sua terceira parte confiável. O assistente enviará um aviso de que seu site não está utilizando o protocolo SSL. Aceite este aviso clicando no botão Sim, mas lembre-se de que um site de produção deve usar SSL para esses tipos de cenário.
Na próxima janela, selecione o botão Usar Opção STS Existente e insira o URI dos metadados WS-Federation publicados pelo namespace Controle de Acesso. Esse URI pode ser encontrado no portal em Integração do aplicativo. Se o namespace Controle de Acesso for mvc3samples, o URI será https:// mvc3samples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml. Após inserir esse valor, clique em Avançar.
Como seu site não exige tokens criptografados. clique em Avançar nas caixas de diálogo restantes e depois clique em Concluir.
Seu aplicativo agora está configurado para usar o ACS com a proteção de recurso do .NET do ASP. É preciso desabilitar essa proteção para que possamos usar a nossa própria página de logon personalizada com filtros de autenticação MVC3 mais detalhados. No arquivo web.config, em Configuração, exclua a seguinte configuração:
<location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
Em system.web, exclua a seguinte configuração:
<authorization> <deny users="?" /> </authorization>
Com essas duas configurações removidas, o ASP .NET não realizará autenticações ou autorizações em seu nome.
Pressione F5 em Visual Studio para executar o aplicativo. Seu navegador levará você para a página principal do aplicativo.
Clique no link Entrar no canto superior direito e selecione um provedor de identidade na lista exibida. Após a autenticação, você retornará à home page e suas informações de usuário serão exibidas no canto superior direito (observe que não fornecerá um nome de usuário).
Clique em Fazer logoff para fazer logoff. Isso limpará os cookies de sessão e levará você de volta para a página principal.
Clique no link Directory. Como já não está autenticado, você será solicitado a escolher um provedor de identidade para acessar a página Directory.
Isso acontece porque a página Directory (Índice em DirectoryController) é protegida pelo RequireAuthenticationAttribute. Ao escolher um provedor de identidade e fazer a autenticação, você será direcionado de volta para a página Directory.