Автентифікація третьої сторони за допомогою протоколу SAML

5 серпня 2015 | за

Резюме

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

Функція

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

Знімок екрана входу в систему edX Edge

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

Сторінка входу Edge із зразком списку інституційних постачальників

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

Сторінка входу, яка підтверджує, чи бажають користувачі входити, використовуючи обліковий запис установи

Коли учнів запрошують записатися на курс, вони спрямовуються прямо на цю сторінку входу. Якщо учні переходять за посиланням із системи кампусу, вони можуть негайно ввійти в систему, отримати запит на вхід за допомогою облікових даних із цього кампусу або їм буде показана звичайна сторінка входу. Поведінка залежить від того, як створено посилання, чи входив учень раніше, чи ввійшов учень у систему кампусу чи ні, і як налаштовано інтеграцію.

Однак у всіх випадках після надання відповідних облікових даних (залежно від вимог конкретного закладу) учні автоматично перенаправляються до потрібного ресурсу 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, яка збирається для вирішення проблем інтеграції кампусу. Групу було засновано з принципом, згідно з яким усі члени внесуть у процес одну з наступних дій:

  1. Інтелектуальний капітал у формі участі в обговореннях і перегляді документів, особливо для виявлення різних варіантів використання для задоволення широкого кола потреб.
  2. Розробка додатків у формі внесків у кодову базу Open edX.
  3. Валідація у формі тестування рішень, розроблених його членами.

Щоб підтримати робочу групу та будь-які наступні проекти, які наразі включають цей проект автентифікації, а також проект підтримки 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).

 

Loading

Час для більшого? Перегляньте статті нижче.

Вирішення проблем разом: Розробка платформи, керована спільнотою
Майбутнє в рамках конференції Open edX: «Навички та масштабування»
Відкриті семінари розробників конференції edX
Повернення нашого цифрового майбутнього: Чому я приєднався до групи Open Renaissance
Приєднуйтесь до конференції Open edX 2026!

На конференції Open edX 2026 року будуть представлені інноваційні сценарії використання однієї з найкращих у світі систем керування онлайн-навчанням з відкритим кодом, платформи Open edX, а також відкриються останні досягнення в дизайні навчання, групі курсів і методах роботи та розширення платформи Open edX. , включаючи проривні технології, такі як генеративний ШІ.