Postado originalmente em 11/06/2014 no Valence Developer Blog por Sarah-Beth Bianchi.
O desafio
O modelo de autenticação para as APIs do Valence Learning Framework exige que um usuário faça login no Ambiente de aprendizagem por meio de uma sessão do navegador. Esse é um fluxo de trabalho tranquilo ao criar um aplicativo da Web, permitindo que o usuário seja redirecionado para a tela de login do LMS e, em seguida, de volta ao seu aplicativo em rápida sucessão. No entanto, se você estiver criando um aplicativo nativo que não é executado em um navegador, o fluxo de trabalho pode parecer desarticulado e o processo para recuperar com segurança os tokens de usuário pode ser complicado. Fazer com que seu aplicativo nativo inicie uma sessão do navegador e, em seguida, traga o usuário de volta ao aplicativo após a autenticação é um problema importante a ser resolvido.
A solução
O Exemplo do lado do cliente Permite que um aplicativo nativo inicie uma sessão da Web, confirme a autenticação bem-sucedida do usuário, passe de volta os tokens de usuário necessários para o aplicativo e feche a sessão do navegador, incluindo o fechamento da guia em navegadores compatíveis. Quando adicionado ao seu aplicativo nativo, esse código orienta o usuário por meio da alternância de contexto necessária para a autenticação para minimizar a interrupção da experiência do usuário.
Os detalhes
Quando seu aplicativo chega a um ponto em que a autenticação do usuário é necessária, por exemplo, se o aplicativo precisa extrair novo conteúdo de um curso, a amostra do lado do cliente entra em ação. O exemplo abre uma sessão do navegador para levar o usuário à tela de logon do LMS e também inicia um servidor HTTP para escutar o redirecionamento que ocorre após a autenticação ser bem-sucedida. Depois que o usuário faz login com êxito, o servidor HTTP recebe os tokens de usuário e os passa de volta para seu aplicativo. O exemplo também envia uma chamada para fechar a guia do navegador aberta. Alguns navegadores - como o Firefox - não se permitem ser fechados via javascript. Nesse caso, o navegador exibe uma mensagem informando ao usuário que é seguro fechar a guia do navegador. Depois que o usuário conclui esse processo de autenticação, ele retorna ao aplicativo e pode avançar em um estado autenticado.
A amostra
O exemplo fornecido é escrito em C#. Para fazê-lo funcionar em seu ambiente, você precisará configurar algumas variáveis.
- Na linha 66 de Programs.cs, atualize o ponteiro para o LMS. No exemplo, ele é definido como lms.valence.desire2learn.com que é o servidor de exemplo usado pelo Ferramenta de teste de API amostra online.
- Nas linhas 7 e 8 de App.config, atualize os valores appId e appKey para corresponder aos valores de um aplicativo que você registra. Os valores na amostra são os mesmos encontrados na API Test Tool e só funcionarão no LMS de amostra associado a essa ferramenta.
- Na linha 24 do Program.cs, você tem a opção de alterar a porta que o servidor HTTP usa. Como esse servidor HTTP está sendo executado na máquina local, você não precisará alterar o valor, a menos que essa porta seja alocada para outro processo.
Sua vez
Experimente este exemplo em seu próprio aplicativo do lado do cliente e compartilhe seus comentários nos fóruns. Se você optar por portar este exemplo para outro idioma, considere contribuir com ele de volta para a Comunidade Valence para que possamos hospedá-lo no Organização do GitHub do Brightspace.