Resumo
Nos últimos meses, os parceiros edX e membros da comunidade Open edX projetaram e implementaram novos recursos de login que permitem que os alunos usem suas credenciais do campus para acessar cursos edX. Da mesma forma que o edX atualmente suporta login com o Google ou Facebook, os alunos das instituições participantes podem se autenticar no edX usando o provedor de identidade de sua escola. Além disso, as instituições podem optar por compartilhar dados com o edX para fornecer uma experiência mais personalizada, como nome e sobrenome para preencher automaticamente os perfis edX dos alunos ou identificadores exclusivos de alunos para criar suporte posteriormente para sincronização de listas ou notas.
A característica
Quando os alunos visitam o ambiente edX Edge, eles terão a opção de fazer login usando suas credenciais de instituição ou campus. Os alunos também poderão acessar esse método de login alternativo ao iniciar em seus sistemas on-line do campus ou visitar o site por meio de um link de convite especial que as equipes do curso podem enviar por e-mail.

Quando os alunos navegam diretamente para edge.edx.org, primeiro eles escolhem “usar minhas credenciais da instituição/campus”.

Em seguida, eles são vinculados à página de login de sua instituição.

Quando os alunos são convidados a se inscrever em um curso, eles são direcionados diretamente para esta página de login. Se os alunos seguirem um link de um sistema do campus, eles poderão fazer login imediatamente, ser solicitados a fazer login com credenciais desse campus ou receber a página de login regular. O comportamento depende de como o link foi construído, se o aluno fez login antes, se o aluno está ou não conectado ao sistema do campus e como a integração está configurada.
Em todos os casos, no entanto, ao fornecer as credenciais apropriadas (dependendo dos requisitos de sua instituição em particular), os alunos são redirecionados automaticamente para o recurso edX solicitado. Quando os alunos fazem login pela primeira vez, eles são solicitados a preencher alguns detalhes adicionais da conta (por exemplo, nome e endereço de e-mail). Essas informações são usadas para associar a identidade baseada na conta do aluno à sua identidade edX. O aluno não precisa realizar essa ação novamente, a menos que desvincule as contas.
A tecnologia
Este recurso usa SAML2.0 (Security Assertion Markup Language, versão 2.0), que fornece um meio padronizado de troca de dados de autenticação e autorização entre as partes. Em uma troca SAML, o provedor de identidade afirma com segurança a identidade e os direitos de acesso de um usuário final a um provedor de serviços - e, portanto, permite que o usuário obtenha acesso aos recursos especificados. Nesse caso, o provedor de identidade é qualquer um dos serviços de login institucionais implementados atualmente e o provedor de serviços é edX. Quando a autenticação for concluída, o aluno terá acesso a qualquer recurso disponível no edge.edx.org, desde que esteja matriculado no curso associado a esse recurso.
Por ser desenvolvido com SAML, o novo serviço de login é totalmente compatível com shibboleth, uma implementação de código aberto do protocolo SAML que é amplamente utilizada por instituições de ensino superior. Em uma pesquisa com os membros do nosso grupo de trabalho, descobrimos rapidamente que todos tinham pelo menos uma parte de sua base de alunos no Shibboleth e algumas instituições têm todos os seus usuários em um único repositório de identidade baseado no Shibboleth. Em nossa versão inicial, estamos configurando o edX Edge para suportar logins do Shibboleth; em versões subsequentes, planejamos expandir o suporte para outros provedores de identidade compatíveis com SAML2, com base na demanda.
Esse recurso se baseia em nosso implementação de autenticação de terceiros existente, contribuído em 2014 por John Cox, do Google. Também aproveita a Funcionalidade do modelo de configuração, implementado por Cale Pennington da edX, que fornece uma solução de “configuração via banco de dados” para Django.
Também contamos muito com o trabalho de dois outros projetos de código aberto: Autenticação Social Python e Python-saml. Ambas as equipes de projeto foram muito receptivas, e essa colaboração entre três projetos de código aberto é digna de nota. Braden MacDonald, o principal desenvolvedor, contribuiu com mudanças que adicionaram suporte para SAML para Python Social Auth, além de adicionar recursos que precisávamos para Python-saml. Os revisores upstream fizeram um esforço para revisar e incorporar as contribuições em tempo hábil, garantindo um lançamento pontual do recurso no final de junho. Em vez de bifurcar o código e fazer essas alterações apenas para o edX, toda a comunidade Python agora pode se beneficiar desse trabalho.
Esses projetos nos permitiram aproveitar o grande volume de trabalho existente e focar nos recursos de integração exclusivos que precisávamos para a plataforma Open edX, reduzindo substancialmente o tempo geral de desenvolvimento.
O Processo
O projeto de autenticação de terceiros surgiu das necessidades identificadas no edX Campus Applications Working Group, que se reúne para enfrentar os desafios de integração do campus. O grupo foi fundado com o princípio de que todos os membros contribuiriam com um dos seguintes itens para o processo:
- Capital de pensamento na forma de participação em discussões e revisão de documentos, especialmente trazendo à tona diferentes casos de uso para atender a uma ampla gama de necessidades.
- Desenvolvimento de aplicativos na forma de contribuições para a base de código Open edX.
- Validação na forma de teste das soluções desenvolvidas pelos seus membros.
Para apoiar o grupo de trabalho e quaisquer projetos resultantes - que atualmente incluem este projeto de autenticação, bem como um projeto para apoiar a edX como fornecedora de ferramentas LTI - a edX fornece suporte contínuo ao desenvolvimento de produtos, criando uma estrutura para engajamento, orientando decisões de arquitetura e, finalmente, avaliando soluções para inclusão na plataforma Open edX.
O que vem por aí?
Hoje, esse recurso está implantado no edge.edx.org e está sendo usado por um parceiro, a Universidade da Colúmbia Britânica. Estamos trabalhando com outros parceiros para testar e implantar a solução para seus alunos. No futuro, esperamos estender os recursos das seguintes maneiras interessantes:
- Crie um mecanismo para que escolas parceiras com fortes restrições de privacidade passem sua ID de aluno opaca e recuperem a ID de usuário edX, para fins de análise e integração.
- Integre com federações Shibboleth como a InCommon, para que estudantes de praticamente qualquer universidade dos EUA possam usar o SSO.
- Personalize a experiência de login com a marca do parceiro.
Se alguém da comunidade Open edX estiver interessado em trabalhar nesses recursos, por favor entre em contato com a equipe edX Open Source.
Obrigado!
Agradecimentos especiais vão para nossa equipe de projeto SSO:
Xavier Antoviaque, OpenCraft
Braden MacDonald, OpenCraft (desenvolvedor líder)
Derek White, UBC
Pan Luo, UBC
William Ono, UBC
Brian Talbot, edX
Frances Botsford, edX
Por favor não hesite em chegar a mim para obter informações adicionais sobre o projeto, ou inspecione a fonte no GitHub (https://github.com/edx/edx-platform/tree/master/common/djangoapps/third_party_auth).
![]()