Резюме
Протягом останніх кількох місяців партнери edX і учасники спільноти Open edX розробили та впровадили нові можливості входу, які дозволяють учням використовувати свої облікові дані кампусу для доступу до курсів edX. Подібно до того, як edX наразі підтримує вхід через Google або Facebook, учні закладів-учасників можуть автентифікуватися в edX за допомогою постачальника ідентифікаційної інформації свого навчального закладу. Крім того, навчальні заклади можуть ділитися даними з edX, щоб забезпечити більш персоналізований досвід, наприклад ім’я та прізвище для автоматичного заповнення профілів edX учнів або унікальні ідентифікатори студентів, щоб пізніше створити підтримку для синхронізації списку чи оцінок.
Функція
Коли учні відвідають середовище edX Edge, їм буде запропоновано ввійти, використовуючи облікові дані свого навчального закладу чи кампусу. Учні також матимуть доступ до цього альтернативного методу входу, починаючи зі своїх онлайн-систем кампусу або відвідуючи сайт за спеціальним посиланням із запрошенням, яке команди курсу можуть надіслати електронною поштою.

Коли учні безпосередньо переглядають edge.edx.org, вони спочатку вибирають «використовувати облікові дані мого закладу/кампусу».

Потім їх буде пов’язано зі сторінкою входу в установу.

Коли учнів запрошують записатися на курс, вони спрямовуються прямо на цю сторінку входу. Якщо учні переходять за посиланням із системи кампусу, вони можуть негайно ввійти в систему, отримати запит на вхід за допомогою облікових даних із цього кампусу або їм буде показана звичайна сторінка входу. Поведінка залежить від того, як створено посилання, чи входив учень раніше, чи ввійшов учень у систему кампусу чи ні, і як налаштовано інтеграцію.
Однак у всіх випадках після надання відповідних облікових даних (залежно від вимог конкретного закладу) учні автоматично перенаправляються до потрібного ресурсу edX. Коли учні вперше входять до системи, їх просять заповнити деякі додаткові дані облікового запису (наприклад, ім’я та адресу електронної пошти). Ця інформація використовується для пов’язування облікового запису учня з його або її ідентифікатором edX. Учневі не потрібно виконувати цю дію знову, якщо вона не від’єднає облікові записи.
технології
Ця функція використовує SAML 2.0 (Security Assertion Markup Language, версія 2.0), яка забезпечує стандартизовані засоби обміну даними автентифікації та авторизації між сторонами. Під час обміну SAML постачальник ідентифікаційної інформації безпечно надає ідентифікаційні дані та права доступу кінцевого користувача постачальнику послуг — і, отже, дозволяє користувачеві отримати доступ до вказаних ресурсів. У цьому випадку постачальником ідентифікаційної інформації є будь-яка з наразі реалізованих установчих служб входу, а постачальником послуг є edX. Після завершення автентифікації учень отримує доступ до будь-якого ресурсу, доступного на edge.edx.org, за умови, що він чи вона зареєстровані на курсі, пов’язаному з цим ресурсом.
Оскільки нова служба входу розроблена на основі SAML, вона повністю сумісна з Шиболет, відкрита реалізація протоколу SAML, яка широко використовується у вищих навчальних закладах. Під час опитування членів нашої робочої групи ми швидко виявили, що кожен мав принаймні частину своєї бази учнів на Shibboleth, а деякі навчальні заклади мали всіх своїх користувачів у єдиному сховищі ідентифікації на основі Shibboleth. У нашому початковому випуску ми налаштовуємо edX Edge для підтримки входу в систему Shibboleth; у наступних випусках ми плануємо розширити підтримку інших постачальників ідентифікаційної інформації, сумісних із SAML2, залежно від попиту.
Ця функція базується на нашій існуюча реалізація автентифікації третьої сторони, наданий у 2014 році Джоном Коксом з Google. Він також використовує переваги Функціональність ConfigurationModel, реалізований Кейлом Пеннінгтоном з edX, який забезпечує рішення «налаштування через базу даних» для Django.
Ми також значною мірою покладалися на роботу двох інших проектів з відкритим кодом: Python Social Auth та Python-saml. Обидві команди проекту були дуже чуйними, і цю співпрацю між трьома проектами з відкритим кодом варто відзначити. Брейден Макдональд, головний розробник, вніс зміни, які додали підтримка SAML до Python Social Auth, а також додавання функції, необхідні для Python-saml. Рецензенти попередньої версії доклали зусиль, щоб своєчасно переглянути та включити внески, забезпечивши своєчасний випуск функції наприкінці червня. Замість того, щоб розгалужувати код і вносити ці зміни лише для edX, уся спільнота Python тепер може отримати користь від цієї роботи.
Ці проекти дозволили нам скористатися великою кількістю наявної роботи та зосередитися на унікальних функціях інтеграції, необхідних для платформи Open edX, таким чином значно скоротивши загальний час розробки.
процес
Проект третьої сторони автентифікації виник через потреби, визначені робочою групою edX Campus Applications Working Group, яка збирається для вирішення проблем інтеграції кампусу. Групу було засновано з принципом, згідно з яким усі члени внесуть у процес одну з наступних дій:
- Інтелектуальний капітал у формі участі в обговореннях і перегляді документів, особливо для виявлення різних варіантів використання для задоволення широкого кола потреб.
- Розробка додатків у формі внесків у кодову базу Open edX.
- Валідація у формі тестування рішень, розроблених його членами.
Щоб підтримати робочу групу та будь-які наступні проекти, які наразі включають цей проект автентифікації, а також проект підтримки edX як постачальника інструментів LTI, edX забезпечує постійну підтримку розробки продукту, створюючи структуру для взаємодії, керуючи рішеннями щодо архітектури та, зрештою, оцінюючи рішення для включення в платформу Open edX.
Що далі?
Сьогодні ця функція розгорнута на edge.edx.org і використовується одним партнером, Університетом Британської Колумбії. Ми працюємо з іншими партнерами, щоб перевірити та розгорнути рішення для їхніх учнів. У майбутньому ми сподіваємося розширити можливості такими цікавими способами:
- Створіть механізм для шкіл-партнерів із суворими обмеженнями конфіденційності, щоб передавати свій непрозорий ідентифікатор студента та повертати ідентифікатор користувача edX для цілей аналітики та інтеграції.
- Інтеграція з федераціями Shibboleth, такими як InCommon, щоб студенти практично будь-якого університету США могли використовувати SSO.
- Налаштуйте процес входу за допомогою брендингу партнера.
Якщо хтось із спільноти Open edX зацікавлений у роботі над цими функціями, будь ласка зверніться до команди edX Open Source.
Спасибо!
Особлива подяка нашій команді проекту SSO:
Ксав'є Антовіак, OpenCraft
Брейден Макдональд, OpenCraft (провідний розробник)
Дерек Уайт, UBC
Пан Луо, UBC
Вільям Оно, UBC
Браян Телбот, edX
Френсіс Ботсфорд, edX
Будь ласка, не вагайтеся звернися до мене щоб отримати додаткову інформацію про проект, або перегляньте джерело на GitHub (https://github.com/edx/edx-platform/tree/master/common/djangoapps/third_party_auth).
![]()