Partilhar via


Cenário: aplicativo nativo chamando API Web

Saiba como criar um aplicativo nativo conectando usuários autenticados pelo AD FS 2019 e adquirindo tokens usando a biblioteca MSAL para chamar APIs Web.

Antes de ler este artigo, é necessário estar familiarizado com os Conceitos do AD FS e o Fluxo de concessão de código de autorização

Visão geral

Visão geral

Neste fluxo, você adiciona autenticação ao aplicativo nativo (cliente público), que poderá, portanto, conectar os usuários e chamar uma API Web. Para chamar uma API Web de um aplicativo nativo que conecta usuários, você poderá usar o método de aquisição de token AcquireTokenInteractive da MSAL. Para permitir essa interação, a MSAL aproveita um navegador da Web.

Para reconhecer melhor como configurar um aplicativo nativo no AD FS para adquirir o token de acesso de forma interativa, usaremos um exemplo disponível aqui e percorreremos as etapas de registro de aplicativo e configuração de código.

Pré-requisitos

  • Ferramentas de cliente do GitHub
  • AD FS 2019 ou posterior configurado e em execução
  • Visual Studio 2013 ou posterior.

Registro de aplicativo no AD FS

Esta seção mostra como registrar o aplicativo nativo como um cliente público e a API da Web como uma RP (terceira parte confiável) no AD FS

  1. No Gerenciamento do AD FS, clique com o botão direito do mouse em Grupos de Aplicativos e selecione Adicionar Grupo de Aplicativos.

  2. No Assistente para Adicionar Grupo de Aplicativos, para o Nome insira NativeAppToWebApi e, em Aplicativos cliente-servidor, selecione o modelo Aplicativo nativo acessando uma API Web. Clique em Próximo.

    Captura de tela da página inicial do Assistente para Adicionar Grupo de Aplicativos mostrando o modelo Aplicativo nativo acessando uma API Web realçado.

  3. Copie o valor Identificador de Cliente. Ele será usado posteriormente como o valor de ClientId no arquivo App.config do aplicativo. Insira o seguinte para o URI de Redirecionamento:https://ToDoListClient. Clique em Adicionar. Clique em Próximo.

    Captura de tela da página Aplicativo nativo do Assistente para Adicionar Grupo de Aplicativos mostrando o URI de redirecionamento.

  4. Na tela Configurar API Web, insira o Identificador:https://localhost:44321/. Clique em Adicionar. Clique em Próximo. Esse valor será usado posteriormente nos arquivos App.config e Web.config do aplicativo.

    Captura de tela da página Configurar API Web do Assistente para Adicionar Grupo de Aplicativos mostrando o identificador correto.

  5. Na tela Aplicar Política de Controle de Acesso, selecione Permitir todos e clique em Avançar.

    Captura de tela da página Escolher Política de Controle de Acesso do Assistente para Adicionar Grupo de Aplicativos mostrando a opção Permitir todos realçada.

  6. Na tela Configurar Permissões de Aplicativo, verifique se openid está selecionado e clique em Avançar.

    Captura de tela da página Configurar Permissões de Aplicativo do Assistente para Adicionar Grupo de Aplicativos mostrando o I D aberto selecionado.

  7. Na tela Resumo, clique em Avançar.

  8. Na tela Concluído, clique em Fechar.

  9. No Gerenciamento do AD FS, clique em Grupos de Aplicativos e selecione o grupo de aplicativos NativeAppToWebApi. Clique com o botão direito do mouse e selecione Propriedades.

    Captura de tela da caixa de diálogo Gerenciamento do AD FS mostrando o grupo NativeAppToWebApi realçado e a opção Propriedades na lista suspensa.

  10. Na tela de propriedades de NativeAppToWebApi, selecione NativeAppToWebApi – API Web em API Web e clique em Editar…

    Captura de tela da caixa de diálogo Propriedades de NativeAppToWebApi mostrando o aplicativo NativeAppToWebApi – API Web realçado.

  11. Na tela NativeAppToWebApi – Propriedades de API Web, selecione a guia Regras de Transformação de Emissão e clique em Adicionar Regra...

    Captura de tela da caixa de diálogo NativeAppToWebApi – Propriedades de API Web mostrando a guia Regras de Transformação de Emissão.

  12. Em Assistente para Adicionar Regra de Declaração de Transformação, selecione Transformar uma Declaração de Entrada no menu suspenso Modelo de regra de declaração: e clique em Avançar.

    Captura de tela da página Selecionar Modelo de Regra do Assistente para Adicionar Regra de Declaração de Transformação mostrando a opção Transformar uma Declaração de Entrada selecionada.

  13. Insira NameID no campo Nome da regra de declaração:. Selecione Nome para Tipo de declaração de entrada:, ID do Nome para Tipo de declaração de saída: e Nome comum para Formato de ID do nome de saída:. clique em Concluir.

    Captura de tela da página Configurar Regra do Assistente para Adicionar Regra de Declaração de Transformação mostrando a configuração explicada acima.

  14. Clique em OK na tela NativeAppToWebApi – Propriedades de API Web e, em seguida, na tela Propriedades de NativeAppToWebApi.

Configuração de código

Esta seção mostra como configurar um aplicativo nativo para fazer logon do usuário e recuperar o token para chamar a API Web

  1. Baixe o exemplo aqui

  2. Abrir o exemplo usando o Visual Studio

  3. Abra o arquivo App.config. Modifique o seguinte:

    • ida:Authority – insira https://[your AD FS hostname]/adfs

    • ida:ClientId – insira o valor do Identificador do Cliente de nº 3 em Registro de Aplicativo na seção do AD FS acima.

    • ida:RedirectUri – insira o valor do URI de Redirecionamento de nº 3 em Registro de Aplicativo na seção do AD FS acima.

    • todo:TodoListResourceId – insira o valor do Identificador de nº 4 no Registro de Aplicativo na seção do AD FS acima.

    • ida: todo:TodoListBaseAddress – insira o valor do Identificador de nº 4 em Registro de Aplicativo na seção do AD FS acima.

      Captura de tela do arquivo de configuração do aplicativo mostrando os valores modificados.

  4. Abra o arquivo Web.config. Modifique o seguinte:

    • ida:Audience – insira o valor do Identificador do nº 4 na seção Registro de Aplicativo no AD FS acima

    • ida: AdfsMetadataEndpoint – insira https://[your AD FS hostname]/federationmetadata/2007-06/federationmetadata.xml

      Captura de tela do arquivo de configuração da web mostrando os valores modificados.

O exemplo de teste

Esta seção mostra como testar o exemplo configurado acima.

  1. Após as alterações de código, recompile a solução

  2. No Visual Studio, clique com o botão direito do mouse na solução e selecione Definir Projetos de Inicialização...

    Captura de tela da lista que aparece ao clicar com o botão direito do mouse na solução com a opção Definir Projetos de Inicialização realçada.

  3. Nas páginas Propriedades, verifique se Ação está definida como Iniciar para cada um dos Projetos

    Captura de tela da caixa de diálogo Páginas de Propriedade de Solução mostrando a opção Vários projetos de inicialização selecionada e todas as ações dos projetos definidas como Iniciar.

  4. Na parte superior do Visual Studio, clique na seta verde.

    Captura de tela da interface do usuário do Visual Studio com a opção Iniciar realçada.

  5. Na tela principal do Aplicativo Nativo, clique em Entrar.

    Captura de tela da caixa de diálogo Cliente de Lista de Tarefas Pendentes.

Se você não visualizar a tela do aplicativo nativo, pesquise e remova os arquivos *msalcache.bin da pasta em que o repositório do projeto está salvo no sistema.

  1. Você será redirecionado para a página de entrada do AD FS. Vá em frente e entre.

    Captura de tela da página de Entrada.

  2. Após entrar, insira o texto Compilar um aplicativo nativo para API Web em Criar um item de Tarefa Pendente. Clique em Adicionar Item. Isso chamará o Serviço de Lista de Tarefas Pendentes (API Web) e adicionará o item no cache.

    Captura de tela da caixa de diálogo Cliente de Lista de Tarefas Pendentes com o novo item de tarefa pendente preenchendo a seção Itens de Tarefas Pendentes.

Próximas etapas

Fluxos e cenários de aplicativo do AD FS OpenID Connect/OAuth