Infrastructure Technical Documentation

STATUS


Mozilla Open Badge Infrastructure (OBI)

BACKGROUND / FRAMING
Why Are We Doing This?

Description
Enabling learners to earn badges wherever they're learning across the web requires support for multiple individual badge issuers. Empowering learners to use their badges as legitimate credentials requires support for sharing of badges across many display sites. The Open Badges framework is designed to allow any learner to collect badges from multiple sites, tied to a single identity, and then share them out across various sites -- from their personal blog or web site to social networking profiles. It is critical for this infrastructure to be open to give learners control over their own learning and credentials. allow anyone to issue badges, and for each learner to carry the badges with them across the web and other contexts.


TECH SPECS


DEFINITIONS



WHAT MOZILLA IS BUILDING

Diagram
https://wiki.mozilla.org/images/a/aa/Open_Badges_--_tech-diagram-_2.2.jpg

Backpack + Metadata Spec + APIs + Authentication Channel + Endorsement/Verification Channel == Open Badge Infrastructure

Details


METADATA SPEC

Finalized Badge Manifest/Spec:
http://openbadges.lighthouseapp.com/projects/80353/badge-manifest
Updated 9/1: https://github.com/mozilla/openbadges Changes:

Badge Manifest Verifier:
Used to test the sending of your JSON blobs to Mozilla
https://github.com/mozilla/openbadges


PNG FILES / BADGE BAKING

Technical Specifics / API Specifics: https://github.com/mozilla/openbadges


BADGE IMAGE STANDARDS


ISSUERS AND DISPLAYERS

"ISSUE REQUIREMENTS / WHY & HOW TO BECOME AN ISSUER" "Independent Issuers"

Why Become an OBI Issuer

Requirements for issuers

NOTE: We have an example of issuer tech, built in python with the alpha version of the infrastructure in early July. This code is available for partners to explore/utilize for their own issuing: https://github.com/lmorchard/django-badger. We will also provide some assistance for beta partners if needed. This needs updating based on the new manifest changes - will be updated after 9/15

Function Flow For Issuers:

  1. 0. Issuer must have an email address for user.
  2. 1. Issuer provides a badge manifest (retrievable by GET request) to Mozilla baking service
  1. 2. Verification of issuer and issuee is implicit
    • badges are associated with issuers by fully qualified domain name (visual distinction in artifact)
    • email address == identity

BETA:

  1. 3. Mozilla baking service forwards embedded PNG to the Backpack.
  2. 4. Mozilla sends PNG back to the issuer
  3. 5. Issuer forwards the badge to the user (most likely via email)

POST BETA:

  1. 3. Mozilla baking service sends PNG back to issuer
  2. 4. Issuer asks user how they want the badge: sent to the OBI or delivered via email
  3. 5. Issuer honors user's choice and sends to the OBI and/or to the user directly via email

DISPLAY REQUIREMENTS / HOW TO BECOME A DISPLAY SITE

Functional Flow For Displayers:
PUBLIC BADGE DISCOVERY:

  1. User sets privacy controls on badges through the Backpack; sets some of the badges to Public
  2. Displayer queries the Backpack via the user's email address
  3. Mozilla unpacks badges and sends the JSON for all public badges for that user to the displayer

USER SHARE

  1. Displayer registers with the OBI as a displayer - meaning they will show up as an option for sharing in each Backpack
  2. Users create subgroups of available badges through the Backpack
  3. Users share subgroup(s) with displayer through the Backpack
  4. Mozilla unpacks that user's badges and sends the JSON for all public badges to the displayer

Results:

  1. User maintains control of their badges, can choose where they go
  2. One backpack per user - personas (email addresses) get aggregated at the hub level
    • user doesn't have to have same email at every issuer
  3. Simple to implement
  4. Difficult to spoof
    • Issuers must keep badge manifest on their server. manifest data identifies recipient
    • Unintended recipients can't claim badge
    • Backpack identifies issuer implicitly: parses FQDN to identify issuer
      • Bad issuers may "copy" another badge but it will be easy to spot
      • Artifact contains FQDN.

IDENTITY
Verified Email Identity

OBI Identity

Functional Flows
For Backpack:

  1. 1. User validates identity to Mozilla's Verified Email
    1. 0. Moz ID. Act as a secondary authority.
    2. 1. User creates an account with mozilla (same as sync account)
    3. 2. and asserts which email addresses he or she owns.
    4. 3. do an SMTP challenge to prove ownership
  2. 2. We don't need to retain any profile or personal information about the user, all we need is email address.

USER BACKPACK CREATION/REGISTRATION
Backpack creation

Backpack registration


BADGE AUTHENTICATION
Authentication

Functional Flow

  1. 0. Badge manifest exists in the Backpack
  2. 1. User attempts to display badge via a display site widget
  3. 2. Display site uses the Authentication Channel to communicate with the issuer to confirm that this badge was in fact issued to this user on this date, as well as if the badge has expired, needs updating, etc.
  4. 3. If authenticated, displayer shows the badge. If not authenticated, displayer should reject the badge.

BADGE ENDORSEMENT (SIGNING / VERIFICATION)
Badge Endorsement

Functional Flow

  1. 0. Issuer sends badge to signer
  2. 1. If accepted by signer*, signer sends badge back to issuer signed with signer's private key.
    • If not accepted by signer, signer sends back back to issuer unsigned
  3. 2. Issuer issues badge to user
  4. 3. Issuer/user pushes badge to Backpack
  5. 4. Backpack communicates with the signing authority to confirm the signature against the signers public key
  6. 5. If confirmed, Backpack accepts the badge. If unconfirmed, Backpack rejects badge.

DEVELOPMENT ROADMAP


TEAM