Exemplo de código: Autenticação de Certificado OAuth 2.0
Atualizado em: 19 de junho de 2015
Aplica-se ao Azure
Este exemplo ilustra como autenticar em Microsoft Azure Active Directory Controle de Acesso (também conhecido como serviço de Controle de Acesso ou ACS) usando o protocolo OAuth 2.0 apresentando um token SAML assinado por um certificado X.509. Esse certificado corresponde a uma entidade ServiceIdentity configurada no ACS e o ACS emite um SWT com uma declaração nameidentifier da entidade ServiceId. Este SET. é usado para se autenticar com um recurso protegido do OAuth 2.0. Este exemplo está em conformidade com o rascunho 13 do protocolo do OAuth 2.0. O código para este exemplo está localizado no subdiretório OAuth2 (C#\OAuth2) do pacote de exemplos de código acs (Microsoft Azure Active Directory Controle de Acesso).
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)
Para obter mais detalhes, consulte os pré-requisitos do ACS (https://go.microsoft.com/fwlink/?LinkId=221065).
Configurando o exemplo
A configuração do 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: Configurar o exemplo usando o portal de gerenciamento do ACS
Opção 2: Configurar o exemplo usando o serviço de gerenciamento do ACS
Opção 1: Configurar o exemplo usando o portal de gerenciamento do ACS
Para configurar o exemplo usando o Portal de Gerenciamento do ACS
Vá para o Portal de Gerenciamento do Microsoft Azure (https://manage.WindowsAzure.com), entre e clique em 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 registrar seu aplicativo no ACS, clique em Aplicativos de Terceira Parte Confiável, clique em Adicionar e digite as seguintes informações no formulário:
No campo Nome, insira OAuth2 RP
No campo Realm , insira https://oauth2relyingparty/
No campo Formato do token, selecione SET.
Clique Gerar para criar uma chave nova
No campo Data de vencimento, insira uma data de vencimento apropriada para a chave. A chave já não será válida nesta data.
Clique em Salvar.
Com sua terceira parte confiável registrada, agora é hora de criar as regras que determinam as declarações que o ACS emitirá para seu aplicativo. Neste exemplo, criaremos uma regra que concede qualquer declaração gerada pelo ACS para passar.
Para criar esta regra, clique em Grupos de regras e clique em Grupos de regras padrão para OAuth2 RP. Use as configurações abaixo para adicionar uma nova regra:
Na seção Emissor da declaração, selecione Serviço de controle de acesso
Na seção Tipo de declaração de entrada, selecione Qualquer
Na seção Valor de declaração de entrada, selecione Qualquer
Na seção Tipo de declaração de saída, selecione Passar o tipo de declaração de entrada
Na seção Valor de declaração de saída, selecione Passar o valor de declaração de entrada
Este exemplo depende de credenciais gerenciadas pelo ACS.
Para configurar um certificado de um novo cliente para a aplicação do cliente, clique em Identidades de serviço, clique em Adicionar, e depois digite um nome. Adiciona um tipo de credencial do Certificado X.509 e procure o arquivo ACS2ClientCertificate.cer na pasta de certificados deste exemplo. Clique em Salvar.
Agora que o ACS está configurado, abra Visual Studio.
Opção 2: Configurar o exemplo usando o serviço de gerenciamento do ACS
A solução de exemplo Visual Studio tem um aplicativo de console 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 comuns com informações sobre seu namespace Controle de Acesso. Abra o SamplesConfiguration.cs e insira o seguinte:
ServiceNamespace – Esse é o nome do namespace Controle de Acesso
ManagementServiceIdentityName - Este é um nome da conta de serviço de gerenciamento
ManagementServiceIdentityKey - Esta é a senha associada com a conta de serviço de gerenciamento
AcsHostUrl - Este é o nome do host do ACS
Execute o aplicativo ConfigureSample em Visual Studio. Isso configurará o ACS para executar este exemplo.
Quando o aplicativo ConfigureSample terminar, ele emitirá a chave de assinatura da terceira parte confiável gerado para o console. Copie essa chave para a área de transferência.
Executando o exemplo
Para executar a amostra
Abra o exemplo no Visual Studio. Além de ConfigureSample e Common, a solução consiste em dois projetos: ProtectedResourceWebApp e Client.
Se você ainda não fez isso, insira os detalhes do namespace Controle de Acesso em Common\SamplesConfiguration.cs. Para obter mais informações, consulte a etapa 1 da Opção 2: Configurando por meio do Serviço de Gerenciamento do ACS acima. Este arquivo também é usado pelo projeto do Cliente.
Abra o arquivo web.config no projeto ProtectedResourceWebApp.
Insira a chave de assinatura de token nos elementos apropriados de AppSettings. Se você usou o Serviço de Gerenciamento para configurar o ACS, esse é o valor que você copiou para a área de transferência. Para obter a chave de assinatura do token, no portal do ACS, clique em Certificados e Chaves. Abaixo está um snippet de código que mostra esta seção do arquivo web.config:
<appSettings> <add key="SigningKey" value="...Copy Signing Key..."/> </appSettings>
Para executar o exemplo, inicie o ProtectedResourceWebApp. Aparece um navegador web, mas a caixa de texto está vazia porque o navegador web não está autenticado.
Execute Cliente. o HTML estará exibido na janela da console. Observe que o HTML indica que o usuário está autenticado e exibe as declarações do ACS.