Open Badges Implementation Guide
IP Disclosures
The following participating organizations have made explicit license commitments to this specification:
| Organization Name | Date election made | Necessary claims | Type |
|---|---|---|---|
| Concentric Sky | 2019-10-24 | No | RF RAND (Required & Optional Elements) |
| Arizona State University | 2022-06-21 | No | RF RAND (Required & Optional Elements) |
| Temple University | 2022-06-10 | No | RF RAND (Required & Optional Elements) |
| Credly | 2019-10-03 | No | RF RAND (Required & Optional Elements) |
| Workday, Inc. | 2022-06-10 | No | RF RAND (Required & Optional Elements) |
| RANDA Solutions | 2022-06-09 | No | RF RAND (Required & Optional Elements) |
| Anthology | 2024-04-16 | No | RF RAND (Required & Optional Elements) |
| Unicon | 2024-04-22 | No | RF RAND (Required & Optional Elements) |
| Bowdoin College | 2022-06-11 | No | RF RAND (Required & Optional Elements) |
| American Association of Collegiate Registrars and Admissions Officers (AACARO) | 2024-04-15 | No | RF RAND (Required & Optional Elements) |
| Desire to Learn (D2L) | 2024-04-16 | No | RF RAND (Required & Optional Elements) |
| Digital Knowledge EdTech Lab Inc. | 2024-04-24 | No | RF RAND (Required & Optional Elements) |
| IQC Italian Quality Company | 2024-04-19 | No | RF RAND (Required & Optional Elements) |
| Skybridge Skills | 2024-04-16 | No | RF RAND (Required & Optional Elements) |
| Navigatr | 2024-04-25 | No | RF RAND (Required & Optional Elements) |
| T3 Innovation Network, US Chamber of Commerce Foundation | 2024-04-25 | No | RF RAND (Required & Optional Elements) |
| Territorium | 2024-04-23 | No | RF RAND (Required & Optional Elements) |
| Western Governors University (WGU) | 2022-06-11 | No | RF RAND (Required & Optional Elements) |
List of Contributors
The following individuals contributed to the development of this document:
| Name | Affiliation | Role |
|---|---|---|
| Nate Otto | Skybridge Skills | Invited Expert |
| Justin Pitcher | Anthology | Co-chair, OB |
| Xavi Aracil | 1Edtech | Editor |
| Rob Coyle | 1Edtech | Editor |
Revision History
| Version | Doc Version | Date | Comments |
|---|---|---|---|
| Version 3.0 IMS Candidate Final | 2022-11-10 | Covers Issuer, Displayer, and Host conformance and certification. | |
| Version 3.0 IMS Candidate Final | 2023-06-20 | Updated Linked Data Proof to the new EdDSA Cryptosuite v2022 [[VC-DI-EDDSA]]. | |
| Version 3.0 IMS Candidate Final | 2023-07-14 | New version of the context.json (`context-3.0.2.json`) file. See [[OB-ERRATA-30]] for detailed changes | |
| Version 3.0 IMS Candidate Final | 2023-09-08 | Reorganized some sections of the document to highlight Issuer, Displayer and Host roles.\nAdded recommended practice for including additional info of the recipient of a credential.\nAdded recommended practice for supporting old cryptosuites.\nAdded test vector data for signing Open Badges and Comprehensive Learner Record. | |
| Version 3.0 IMS Candidate Final | 2023-09-22 | Added a section about including older Open Badges in CLR 2.0. | |
| Version 3.0 IMS Candidate Final | 2023-11-09 | Added a section about issuer's key provenance. | |
| Version 3.0 IMS Candidate Final | 2023-12-13 | New version of the context.json (`context-3.0.3.json`) file. See [[OB-ERRATA-30]] for detailed changes | |
| Version 3.0 IMS Candidate Final | 2023-12-15 | Added sections about alignment of achievements with non-1EdTech vocabularies, such Credential Engine. | |
| Version 3.0 IMS Candidate Final | 2023-01-26 | Language of related achievement now uses the new attribute `inLanguage` instead of `@language`. | |
| Version 3.0 IMS Candidate Final | 2024-04-02 | Upgraded to [[VC-DATA-MODEL-2.0]] | |
| Version 3.0 IMS Candidate Final | 2024-10-01 | Added section about extensions.\nAdded section about privacy. | |
| Final Release | 2024-12-23 | Clarified proof mechanism and algorithm selection. | |
| Final Release | 2025-02-12 | Reorganization.\nClarified some paragraphs. | |
| Final Release | 2025-04-07 | Fixed some typos. |
Introduction
The 1EdTech digital credentials specifications, Open Badges and Comprehensive Learner Record (CLR) enable the recognition of learning achievements in many contexts that are cryptographically verifiable as the learners present them to unlock new opportunities across a lifetime of learning and employment. Key use cases include the recognition of skills and competencies, degrees, certificates and professional certifications, participation, and community engagement.
This implementation guide aims to inform product developers who are investigating or planning implementation of the Open Badges 3.0 and/or CLR 2.0 specifications about the available implementation options and how to situate a product within the ecosystem compatible with these specifications.
Overview
Each Open Badges
OpenBadgeCredentialis digitally signed by its issuing organization as Verifiable Credentials compatible with the Verifiable Credentials Data Model v2.0. Issuers may bundle together multiple related achievement credentials into transcripts and other longitudinal records for an individual learner in a CLR as aClrCredential, which is also signed using the same technique as the individual credentials. Additionally, credentials can be augmented with anEndorsementCredentialfrom a third party to lend the support of another individual or organization to the quality or relevance of an issuer or credential data.A RESTful API, with dynamic client registration, is available to transport data in
OpenBadgeCredentialandClrCredentialformat, under the control of the learner, between systems where they are issued, hosted on behalf of the learner, or verified by third parties in order to qualify the learner for job placement or other opportunities. Implementing systems can participate in a variety of rolesSpec documents (Normative References)
The full set of documents is comprised of the following documents:
Audiences
This implementation guide is intended for product developers across various implementation roles necessary for the operation of an ecosystem where digital credentials efficiently recognize achievements that matter and flow to the contexts where these achievements each need to be understood. Products may be situated to perform one or more roles within the ecosystem, such as issuing credentials, hosting credentials on behalf of learners, and verifying credentials.
OB Overview
An Open Badge (
OpenBadgeCredential) is a individual achievement recognized about an individual learner. An Issuer makes a claim that a learner has met the criteria of a particular definedAchievement.CLR Overview
A Comprehensive Learner Record allows many Open Badge achievement credentials to be bundled together, with some additional associations between them defined. This is like another onion layer wrapping the inner set of credentials that is also signed. Individual component credentials are verifiable, and the wrapping CLR is also verifiable. CLRs can contain achievements from multiple different issuers to show a learner's progression with multiple organizations or subdivisions of a large educational institution.
Use Cases
Use cases are outlined in each the Open Badges and Comprehensive Learner Record specifications. Use cases outline how each specification is intended to provide value to end users through interoperability between products.
Open Badges use cases include:
Comprehensive Learner Record use cases include:
OB/CLR in the 1EdTech Ecosystem
The core of both Open Badges and Comprehensive Learner Record is an assertion about an achievement. As defined in Open Badges Specification v3.0 and Comprehensive Learner Record Standard v2.0, an assertion is specific to one learner. It contains a claim that the learner has made a particular achievement and metadata about the achievement, the issuer, and the learner, including possible evidence that provides support for the claim.
These concepts are also present in some way in other specifications within 1EdTech, enabling connections between specifications.
A clear connection to other specifications occurs through the alignment of achievements. An alignment of an
Achievementto can refer to a 1EdTech Competencies and Academic Standards Exchange (CASE)'sCFItemfor linking the achievement to a learning object in a CASE's Competency Framework Package.Another possible connection with other 1EdTech's specifications is the issuer of the credential. Since it can be an organization or entity it can represent the same entity described as an
Orgin 1EdTech OneRoster® Specification v1.1 or Edu-API Specification Specification v1.0.Moreover, the learner who the credential is issued to can have a relationship with the
Userentity in 1EdTech OneRoster® Specification v1.1 or thePersonentity in Edu-API Specification Specification v1.0, as well.Also, 1EdTech OneRoster® Specification v1.1 covers performance of the learner in a context such an assignment vi the
Resultentity. This can be related with theResult Definitionof the issuedAchievement, and theResultof anAchievementSubject.Open Badges and Comprehensive Learner Record can be implemented by systems that use other specifications as well. For example, an Open Badges or CLR application be offered as a tool within an LMS using IMS Global Learning Tools Interoperability® Core Specification v1.3 to launching the OB or CLR-specific interfaces.
Relationship between Verifiable Credentials and OB/CLR
New to this version of the specification, Open Badges and Comprehensive Learner Record are compatible with the Verifiable Credentials Data Model v2.0 (both version 2.0 and the previous Verifiable Credentials Data Model v1.1). The VC Data Model describes an envelope that may be used to express many different types of messages, or "claims", about credential subjects, but credential-type-specific schemas such as OB and CLR are needed in the VC ecosystem to enable coordination of specific credential types and shared expectations for their use.
Open Badges and CLR define three verifiable credential types and expectations for the claims that may be expressed using these types.
OpenBadgeCredential(aliasAchievementCredential, formerly "Assertion" in OB 2.0): An assertion that an individual credentialSubject has achieved the criteria of a specified "Achievement" (formerly "BadgeClass"). Metadata about the achievement, its alignment to standards or competency frameworks, evidence related to its attainment, and the learner and issuer's identifying information may be expressed in the credential.ClrCredential: a container for severalAchievementCredentialsand associations that link them. Capable of representing both a degree and subsidiary credentials or a detailed transcript full of courses completed and progress through a framework of learning outcomes.EndorsementCredential: An endorsement of the quality or value, this is an open-ended low-level container that instead of targeting an individual learner, usually makes claims about anAchievement,Issuer ProfileorOpenBadgeCredential. Endorsements may be issued by individuals or organizations, potentially even badge recipients themselves.CLR and OB also define the verification algorithm for these credentials, as well as a set of APIs for exchanging these credentials. But they will also circulate within the broader Verifiable Credentials ecosystem, including through tools that do not apply the full range of domain-specific checks.
ClrCredentialandOpenBadgeCredentialare Verifiable Credentials and may circulate through wallets and protocols that support other credential types as well. The validity status within these general tools may only show a subset of the checks needed to consider OB/CLR valid and fit for a particular purpose.In addition, issuers may issue these types and make use of issuer identifier types (DID methods), cryptographic key or signature types, status methods, or other Verifiable Credentials options beyond those known to the OB/CLR spec. These additional components may be noted as possibilities in future updates to the OB/CLR specs, but for best interoperability within OB/CLR tools and conformance certification from 1EdTech, issuers should support issuer identifiers, key types, signature types, and (if applicable) status methods mentioned in these specifications. Consult the TrustEd Apps Directory and participate in the 1EdTech membership community to coordinate the selection and rollout of these components as well as potential incorporation into specification updates as named options.
Getting Started (for Developers)
It may seem like an overwhelming task to implement Open Badges 3.0 or CLR 2.0, but there are straightforward options that can take your product to a certified launch simply.
Issuer quickstart
Here is a quickstart tutorial to build an MVP of an Open Badges product that issues Open Badges to learners. It aims to sketch out a simple path to a successful conformant implementation of Open Badges 3.0 issuance. From this base, optional components of the specifications can be layered on to implement relevant APIs, package records in CLR format, implementing revocation or refresh services, and more. Products that complete all the user stories in this quickstart will potentially be eligible for issuer-only certification.
We can track the workflows that must be built through a set of user stories.
Issuer Profile:
See details on the selection of recipient and issuer identifiers, but for the purposes of a quickstart, hosting an issuer profile on an HTTPS url associated with a
did:webDecentralized Identifier is an easy choice for a web application. See DID Web Method Specification For example, if the web application under development is running on the domainexample.com, an issuer profile identifier might bedid:web:example.com:issuers:540e388e-2735-4c3e-9709-80142801c774, which would resolve to a hosted resource available athttps://example.com/issuers/540e388e-2735-4c3e-9709-80142801c774. But what is served at this URL when a client requests it? The most effective answer is to present a response that best matches what the client is requesting, as it indicates with theAcceptHTTP header.Accept: application/jsonorapplication/ld+jsonor does not include anAcceptheader, a JSON-LD that includes the OB 3.0 context should be returned. It should include its own primary id, all required properties from Profile, and a representation of the public key component of the keypair this issuer uses to sign credentials in selectedJWKoreddsa-2022format. See Dereferencing the Public KeyAccept: */*orapplication/html, an HTML representation of theAchievementshould be presented. This should express information about the issuer using Open Graph meta tags, including at least name, description, and image tags for easy rendering of preview cards when theAchievementURL is shared to social media platforms, for instance.In order to sign credentials, the issuer needs to have an associated key referenced from their profile, whether that profile is resolved via a DID or an HTTPS URL. Either a JWT stack using RSA 256 (or RSA with larger key sizes) or an EdDSA stack using a JSON-LD linked data signature must be used to achieve conformance certification as shown below. See Selecting proof methods and crypto algorithms for a detailed discussion on the management of keys and creation of signatures.
An example of a JSON-LD representation of an issuer profile follows, that uses the EdDSA Cryptosuite 2022 option for signing credentials:
Achievement:
Internally, an
Achievementis a database record or document within an issuer system that can be presented using the required and optional properties of the Open BadgesAchievementdata model. For example, if your app uses a relational database, Achievements would be stored in a database table that has columns for each of the required fields and any supported optional fields. See Achievement Data Model for a listing of fields, noting those with[1]or[1..*]multiplicity are the required ones.Open Badges Achievements are often associated with images that provide a visual representation of the achievement. Images are optional but are visually prominent components of badges and are often included.
OpenBadgeCredentialsare issued for manyachievementTypes(see enumeration) that may not traditionally include an image, but OB 3.0 now enables this an image to be included for any type of achievement.For an issuing system that operates a web application on a stable domain, an easy path forward is to select an HTTPS URL as the identifier for each defined
Achievementin its database. For example, if the web application under development is running on the domainexample.com, an achievement identifier might behttps://example.com/achievements/c3c1ea5b-9d6b-416d-ab7f-76da1df3e8d6. See Publishing achievement definitions for a discussion of options forAchievementidentifier. Again, is is best to present a response to requests made to this URL that best matches what the client is requesting, as it indicates with theAcceptHTTP header.Accept: application/jsonorapplication/ld+jsonor does not include anAcceptheader, a JSON-LD that includes the OB 3.0 context should be returned.Accept: */*orapplication/html, an HTML representation of theAchievementshould be presented. This should express information about the Open Graph meta tags including at least name, description, and image tags for easy rendering of preview cards when theAchievementURL is shared to social media platforms, for instance.An example of the JSON-LD document that might be fetched from this endpoint follows:
Note that an image associated with the achievement is hosted at a related URL. This could be alternatively presented as a data URI within the Achievement.
Recipient Identifier:
See Selecting recipient and issuer identifiers for an in-depth discussion on how identifiers may be trusted within software to be associated with organizations or natural persons. A "Self-sovereign identity (SSI)" movement advocates for end user control over the identifiers that refer to users. OB and CLR are compatible with identifiers that support traditional or SSI approaches, including email addresses or student ID numbers on the traditional side and Decentralized Identifiers (DIDs) with varying SSI capabilities.
A workable approach that straddles the divide and can achieve good credential transferability to traditional and new verifiers (credential consumers, such as employers) is to deliver badges that target recipients by human-verifiable means at a minimum but then enable end users to present proof of control of a DID, at which point they may claim a version of the credential signed to that identifier instead.
Implementing this workflow varies for different organizations, depending on what identity management solutions they already use. For example, if an app that enables assessment and award of credentials connects to a Student Information System to gain access to course rosters and the student records in that system each include a student ID number and an email address, that application might choose the email address as the best recipient identifier to use in credentials, because it is easiest for target external consumers of those credentials to verify is associated with an individual. That learner might share their badge on a resume and the hiring manager they send it to can verify it matches them by sending them a six digit code and asking their job applicant to read it back to them.
Recommended options include:
credentialSubject.id.credentialSubject.idproperty, and instead include anidentifierproperty referencing a known identifier that may be verified by humans or other non-VC, such as an email address.Implementing this workflow may look like an educator accessing details about the credential, and then in an "award" section of those details, selecting a student from a roster list and confirming. The result of this action is typically to make a record in the product's database containing the metadata of the award, such as its creation time, the recipient and their identifier, and any other details such as what the educator may have entered in an evidence narrative text box. While it is possible to generate the signature on the credential in order to store it in the system as a signed document at this point, it is not necessary to sign the credential except when delivering it, via download, wallet integration, or OB/CLR REST API.
Implementing this workflow may look like an email message sent to the recipient with a link into the issuing coordination system.
Within a notification email, a learner might see a link into the issuing coordination system, where they are offered the chance to authenticate with their organizational single-sign-on (SSO) provider. After successfully authenticating, they can see options to access or share their badge. See recommended practices about sharing badges via URL, but those capabilities might be available within an Open Badges Host platform, not necessarily an issuer coordination app that produces signed
OpenBadgeCredentials. Here, the recipient may see a download JSON option, which upon activation yields a signed verifiable credential like the following.Several things to note about this credential.
jjefferson18@example.comFleurDeSel. This enables the student to present the credential and their institutional email address to a verifier who can check the hash to ensure the badge belongs to them.verificationMethod.ididentifies the issuer's public signing key using a fragment identifier within the issuer's identifier. This is the same ID that appeared in the representation of the key in the issuer DID document itself.urn:uuid:a9fc82eb-416f-47c3-8786-de890331d4a5. Some implementers might choose an HTTPS URL on the same domain as the issuer DID Document and the Achievement, but is not assumed that the general public would be able to access data about this credential if they retrieved theidof the document. Other issuers may allow learners to rely on badge backpacks or mobile wallets to provide sharing capabilities that match the use case. See discussion: Sharing badge links to social media.Follow the steps in the Conformance Certification Guide for the issuer role to submit a downloaded signed credential like the above for conformance checks.
API quickstart
The API of Open Badges 3.0 and Comprehensive Learner Record 2.0 is divided into four groups, whether the OB / CLR tool is a consumer or a provider of the API and whether the operations it consumes / provides are read operations or write operations.
Depending of your certification goals it must be necessary to implement one or more of these groups of API. For instance, if you're seeking the certification as an Issuer (not Issuer only) you'll need to implement the service-consumer-write group.
Consumer basics
Consumers of the OB / CLR API must acquire an OAuth 2.0 access token from an authorization server for making API calls. The acquisition of the token implies a set of steps:
Call the
ServiceDescriptionendpoint. Once you know the base url of your authorization server, make a GET call to the well-knowgetServiceDescriptionendpoint. The response will contains all the endpoints needed for register your client application (x-imssf-registrationUrl) and acquiring and access token (authorizationUrl,tokenUrlandrefreshUrl) with the desired scopes.Example: Sample getServiceDescription request
Example: Sample getServiceDescription response
Register your client using OAuth 2.0 Dynamic Client Registration Protocol OAuth 2.0 Dynamic Client Registration Protocol. To do that, make a POST call to the endpoint defined in the
x-imssf-registrationUrlfield from the previous step.Example: Sample registration request
The response object will contain the details needed to perform the OAuth 2.0 Authorization Code Grant flow (
client_id,client_secret, among others).Acquire an access token following OAuth 2.0 Authorization Code Grant flow as described in then IMS Security Framework IMS Global Security Framework v1.1. Briefly, it consists in building the
authorizationUrlfrom the url defined in theauthorizationUrlfield gotten from step one with some query parameters. The use of Proof Key for Code Exchange (PKCE) Proof Key for Code Exchange by OAuth Public Clients is recommended.Once built, redirect the user to this url in order to start the OAuth 2.0 Authorization Code Grant flow.
Example: Sample ACG authorization request (line breaks for clarity)
Once the authorization is made, the authorization server will redirect the browser back to the specified
redirect_uriwith thecode,scope, andstatequery string parameters.Then, you have to acquire an access token by making a POST request to the
tokenUrlgotten from the Service Description endpoint. The HTTP POST request MUST include a Basic authorization header with theclient_idandclient_secretprovided in the registration response. The body of the token request MUST include the following form fields:grant_type,code,redirect_uri,scopeandcode_verifier.Example: Sample ACG token request (line breaks for clarity)
The response of this call will contain the access token to use in future calls to the API.
Example: Sample ACG token response
User stories for an issuer (API consumer) and host (API provider)
Here are a selection of user stories covering how to add on support for the OB 3.0 API as an Issuer to a simple product after completing the issuer quickstart above. Completing the consumer-side portion of the will potentially qualify a product for conformance certification as an Open Badges Issuer (with API service-consumer-write support). This is a presentation of the experience of using the API from the user's perspective. Additional under-the-hood technical details for each procedure are described in the Specification section 6: Open Badges API.
Provide the base url or domain of the selected Open Badges host service to the issuer. This could utilize a text input where a user can paste a URL, or a consumer service could add known service providers to a list, presenting the manual input as an advanced option.
The service consumer will call the
getServiceDescriptionendpoint from the base url of the Open Badges service provider (host).By performing the OAuth 2.0 Client Dynamic Registration OAuth 2.0 Dynamic Client Registration Protocol to the endpoint defined in the
x-imssf-registrationUrlfield of the Open Badges Host service description.By following the OAuth 2.0 Authorization Code Grant flow in their browser, following redirects between the issuer and the host service.
A basic service consumer (write) integration would typically push all awarded badges to the host, and a more advanced service consumer may enable users to select a specific scope of credentials for transmission.
By revoking the access token granted to the issuer from within the Open Badges (service provider) interface.
While authenticated with a host service, one action users may take is to view the connected issuer(s) or displayer(s) they have authorized and to revoke some of those approvals. When a user takes this action, it invalidates any access tokens or refresh tokens the connected services, so that those services may no longer access API endpoints on the user's behalf. This should be handled in the issuer or displayer service as a potential expected outcome, after which the service may display an inactive status on the connection and/or prompt the user to reauthorize if they desire to continue sending badges to that host once again.
Your issuer service may discover that your access credentials no longer work as expected when you receive a 401 or 403 status response from the host when attempting to access a protected endpoint and then subsequently receive an error response when attempting token refresh.
Provider basics
The above description of a consumer implementation shows the requests that are made of a provider. This guide does not go into depth about how to accomplish the provider side of these interactions, but the API roughly follows common OAuth patterns for (a) dynamic client registration, authorization code access token grants, and protected resource endpoint access.
ServiceDescriptionendpoint with the right values for theOAuth2ACG's securitySchema. The urls there must point to your OAuth related endpoints.Dynamic Registration.Supporting Technical Resources
Recommended Practices
Conformance certification ensures consistency across an important but focused scope of requirements. A healthy ecosystem will necessarily develop out the collective experience and collaboration of implementers. Implementers are encouraged to join the 1EdTech community to provide feedback and discuss how we can collectively improve our implementations and guidance.
Below are a variety of recommended practices and considerations for the implementation of the Open Badges and CLR specification.
Issuer
Selecting recipient and issuer identifiers, such as DID methods
Both issuers and recipients (credential subjects) of Open Badges and CLR credentials may be identified with a range of identifiers.
Issuers may be identified with an HTTP URL that resolves to an issuer profile that expresses profile and key information in JSON-LD. Or, they might be identified by a Decentralized Identifier (DID) that resolves to a document with some information about the issuer and/or its signing key(s).
DID methods most commonly used in interoperability testing by community members, both for issuer identifiers and recipient identifiers:
did:key, except the value encoded in the DID path is abase64url-encoded representation of a key in JWK (JSON Web Key) format.did:webmethod is a quick way to use HTTP URLs with DIDs, because the value in the path of the DID decodes to a URL which is then fetched, resulting in a DID document. It relies on the DNS registration of a domain holder, but many DIDs may be associated with any one domain or subdomain.Technically, this set of DID methods whose use is commonly observed among early implementers is a narrow range of the DID methods proposed, and each of them lacks some capabilities promoted as possibilities with certain DID methods, such as the ability to rotate keys periodically, recover control after losing relevant keys, or avoidance of the use of DNS. The DID Method Rubric provides a number of relevant comparison factors. Usage of other DID methods may significantly change in the coming years as the consumer technology landscape and open source libraries develop.
The OB 3.0 and CLR 2.0 specifications make no normative requirements strictly limiting which DID methods may be used. Implementers have an incentive to create interoperable experiences with one another through implementing common DID methods and testing interoperability paths for users. In practice, the DID method(s) a credential's Issuer supports being the same as the DID methods Hosts and Displayers (or other wallets and verifiers) support is what governs interoperability.
The Open Badges, CLR and broader Verifiable Credentials ecosystems will take time to converge on reliable interoperability pathways. Specific implementations working together through cooperation and communication will create the opportunities for others to make compatible implementation choices as well as inform future normative specification versions.
Selecting proof methods and crypto algorithms
The OB and CLR specifications define some requirements around the signing or proving of credentials (see Proofs). Two formats of proof method are introduced, JWTs and Linked Data Proofs. Within each format, there are a range of options that issuers may select for cryptographically signing the credentials. Notably, signing algorithm selection and its closely related concept of key material expression format must be considered. The best choices within these options sometimes depend on other parts of the issuer's tech stack and which options are supported among wallets and verifiers with whom badge recipients want to share their badges.
The OB 3.0 and CLR 2.0 specifications identify some specific options, which are used by the conformance test suite to check product implementations. In order to achieve conformance certification, issuers MUST produce credentials secured with a supported mechanism. These identified algorithms will likely see the broadest early implementation within Open Badges.
DataIntegrityProofproof referencing a key URL of a public key expressed ineddsa-rdf-2022format as its verificationMethod.RSA256algorithm, with key material published as JSON Web Key (JWK).Some issuers may experiment with or implement novel proof mechanisms, such as new Linked Data Proofs or JWT signing algorithms, in coordination with hosts and verifiers. These may be useful for specific use cases or to explore new capabilities. However, issuers should be aware that these may not be supported by all hosts, wallets and verifiers, and that interoperability may be limited until these new mechanisms are more widely adopted. The 1EdTech Digital Credentials Workgroup may periodically consider recommending new proof methods for inclusion in the OB and CLR specifications and the 1EdTech certification program.
A step-by-step guide to signing an OB or CLR is provided in the OB specification section on Proofs. In order to achieve certification, implementers must be able to pass conformance testing with one of the listed methods, but it is expected that the ecosystem will grow as issuers, verifiers, and other services explore new approaches.
It is important to not only prevent unauthorized access to keys and application processes that can trigger signing. At least as important to keeping the signing keys themselves safe is being confident in knowing if keys may have been accessed or compromised with a high degree of confidence. Considerations include:
Publishing
Achievementdefinitions and selectingAchievementidentifiersArguably the most important field for an
Achievementis theid, the creator's primary identifier for that achievement. It is expressed as a URI. Two approaches for identifier expression are common, with differing capabilities and slightly different instructions for interpretation:Achievement. When twoOpenBadgeCredentialsare issued at different points in time but reference the sameAchievement.id, they may contain slightly different representations of theAchievementmetadata itself. Relying parties are encouraged to understand the embedded signed data as the representation that the issuer had for the credential at the time it was issued, and they may encounter a different representation embedded in a different credential, which they should understand as a different version of the same achievement. The issuer may use the optionalversionproperty to express a label for each of these versions for presentation where relevant. At any point in time, a relying party may request an updated copy of theAchievementfrom itsidURL. If the response returnsAchievementdata successfully, the client should understand the retrieved metadata to represent the issuer's current understanding of theAchievement. When relying parties encounter the same HTTPS-type achievement ID in AchievmentCredentials across multiple issuers, they can assume that the issuers did intend to recognize the same achievement, as it is defined by its publisher, but they cannot make an assumption that each of the issuers were duly authorized to recognize this achievement by its creator or even that theAchievementhonestly represents the identity of its creator, unless the relying party verifies anOpenBadgeCredentialreferencing thisAchievementissued by the creator referenced in the copy of theAchievementretrieved from its ID URL. Future versions of Open Badges may address use cases and normative requirements serving use cases around verifiable authorship of anAchievementor delegation of capabilities related to anAchievementby theAchievement's creator.OpenBadgeCredentialsthat reference an achievement with this ID over time. ForOpenBadgeCredentialsfrom the same issuer that reference anAchievementwith the same ID, relying parties should interpret these as different versions of the sameAchievement. When the same UUID-typeAchievement.idis referenced by different issuers across multipleOpenBadgeCredentials, relying parties cannot authoritatively determine that the intent was to recognize the same semantic achievement.A common use case among Open Badges implementers is for a verifier to expect a particular
Achievementclaim in anOpenBadgeCredentialfrom a specific issuer. With Open Badges 2.0, it was presumed that verification that an achievement (BadgeClass) was associated with a credential (Assertion) issuer as part of verification, by determining that hostedAchievementIDs were on the same domain as hosted Assertion IDs and/or hosted Issuer IDs. With OB 3.0, some of this capability can no longer be assumed to remain. This is partly because there is no longer a requirement for issuer profiles to use HTTP IDs, but also because integrity verification is assumed to occur at the Verifiable Credentials Data Model level only, because wallets and credentials verifiers will primarily focus on verifying the integrity of the proof on each credential without assumed capacity to verify other relationships represented deeply within these credentials even if OB 3.0 had included such a mechanism in its scope.Managing credential status and revocation
The ability to mark a credential as revoked is an important capability for many organizations that make use of Open Badges and CLR. The Verifiable Credentials Data Model v2.0 offers an extensible mechanism by which a credential status resource may be exposed within a credential. Various use cases and solutions have been developed to enable credential status checking with a range of capabilities and implications. OB and CLR reference optional 1EdTech extensions supporting verifiers in obtaining updated representations of credentials and checking for revocation. Issuers and verifiers need to support a common mechanism in order for status checking to work, and yet issuers often need to produce the credential without knowing which other parties might someday rely on it or what methods those verifiers may support. Here are some mechanisms identified by the implementing community for status and revocation management.
Alignment with CASE items
1EdTech Competencies and Academic Standards Exchange (CASE) specification defines how systems exchange and manage information about learning standards and/or competencies in a consistent and referenceable way.
1EdTech Competencies and Academic Standards Exchange (CASE) defines an information model consisting in, briefly, a container (
CFDoc) of a set of academic standard/competency document definitions (CFItem). TheseCFItemcan have associations with othersCFItemof another containers, allowing several types of relationships between learning objectives/competences from one institution and another.In Open Badges and Comprehensive Learner Record, the recording of related skills, competencies, standards, and other associations are enabled by the
alignmentof anAchievement. This field defines the fields for univocally establish a connection between theAchievementand a node in an educational framework, i.eCFItem.Example: Achievement alignment (CASE)
Alignment with a ceterms:Credential resource
In Open Badges and Comprehensive Learner Record, it is possible to use
alignmentto link anachievementto a resource that is described using non-1EdTech vocabularies. ThreetargetTypes(specifically,ceterms:Credential,ceasn:Competency, andCTDL) have been defined to link to a resource described using the Credential Transparency Description Language (CTDL) family of schema. CTDL defines how credentials, competencies, and many other attributes (such as assessments, courses, programs, transfer value, organizations, and more) can be described in detail and linked to other useful information.ceterms:Credentialis used to establish that a connection is between anachievementand a credential offering described using CTDL. In CTDL, a "credential" can be described using hundreds of defined terms and connections amongst those terms. For example, CTDL can identify a credential as a ‘license’ requiring a particular ‘assessment’ for the demonstration of particular ‘competencies’.Organizations may publish rich descriptive information about the achievements they offer to the Credential Registry. Credential offering information published to the Registry is available in the Credential Finder application (https://credentialfinder.org/), and issuers of badges for these achievements can link to the page in the Credential Finder using an
alignmentwithtargetTypeofceterms:Credentialusing the credential’s CTID.Example: Achievement alignment to more information about the Credential (ceterms:Credential)
Alignment with a ceasn:Competency resource
In Open Badges and Comprehensive Learner Record, it is possible to use
alignmentto link anachievementto a resource that is described using non-1EdTech vocabularies. ThreetargetTypes(specifically,ceterms:Credential,ceasn:Competency, andCTDL) have been defined to link to a resource described using the Credential Transparency Description Language (CTDL) family of schema. CTDL defines how credentials, competencies, and many other attributes (such as assessments, courses, programs, transfer value, organizations, and more) can be described in detail and linked to other useful information.Achievements often align to skills or Competencies, which can be published to the Credential Registry. When aligning to this type of data, use the targetType
ceasn:Competency.Example: Achievement alignment to a competency (ceasn:Competency)
Alignment with a CTDL resource
In Open Badges and Comprehensive Learner Record, it is possible to use
alignmentto link anachievementto a resource that is described using non-1EdTech vocabularies. ThreetargetTypes(specifically,ceterms:Credential,ceasn:Competency, andCTDL) have been defined to link to a resource described using the Credential Transparency Description Language (CTDL) family of schema. CTDL defines how credentials, competencies, and many other attributes (such as assessments, courses, programs, transfer value, organizations, and more) can be described in detail and linked to other useful information.There are many other entity classes that can be described using the CTDL vocabulary. When making an alignment to an Assessment, Learning Opportunity, Job, Occupation, or other entity, use the generic targetType
CTDL. This informs consumers to expect CTDL data of one of these other types. Some consumers may simply render a link to the webpage where more information can be retrieved, and others may support fetching the specific data to provide an even richer display. The following example shows how an issuer might express an alignment to a Learning Opportunity Course that has been published to the Credential Registry as CTDL-formatted open data.Example: Achievement alignment to another type of entity (CTDL)
Skills
A Skill Assertion credential is just like a basic
OpenBadgeCredentialin how anAchievementis included, except that it makes a claim referencing anAchievementthat is generic to allow for use by many possible issuers. TheAchievementmay describe alignment to external competency or skill definitions, such as aCFItem, but the most important aspect of the skill assertion pattern is the shared use of a common achievement that represents a skill or competency across multipleOpenBadgeCredentialissuers.This usage of shared achievements enables consumers to describe specific achievements that they would like learners to hold without being particular about where the learner obtains a credential certifying that achievement. This recognizes the many pathways that lifelong learners find to attain comparable skills.
Example: Skill Assertion (Credential Registry)
Including additional recipient profile information
Sometimes issuers want credentials to be shareable to audiences who are not capable of authenticating subjects via an identifier such as a DID. Many of these use cases may be served by including one or more email identifiers. (Only partial data is shown for clarity, for example omitting the
achievementclaim withincredentialSubject.)Example: Email identifier in credential subject
If the known email address for the user is expected to no longer be a useful source of authentication, such as if the user loses access to a work or university email after leaving that organization (perhaps 6 months after graduation), an issuer may wish to provide additional identifying information, such as a name.
Example: Name identifier in credential subject
Inclusion of additional personally identifiable information about the subject, especially with
"hashed": false, reduces the potential anonymity of the subject. Those with whom the credential is shared may share it to others, who would be able to view this identifying information. While sharing typically passes through control of the subject/holder, different issuers may weigh the potential benefits of including this information against the risks of unauthorized disclosure.If issuers desire to include much more information about the subject in the credential, they may add the
Profiletype and include additional properties from Profile. The above approach using IdentityObject is expected to be more broadly usable, because displayers ofOpenBadgeCredentialswill expect this type of data. Additional data fromProfileis not expected directly withincredentialSubject, so it is less likely that displayers would build custom handling for these unexpected properties. An "advanced" view where users may review the JSON data directly may be included in some displayer products, in which case viewers would be able to review this information more directly.Example: Given name and family name credential subject with Profile
Embedding Evidences
Issuers can add a description of the work that the recipient did to earn the achievement via the
evidenceattribute ofAchievementCredential. This description can be a page that links out to other pages if linking directly to the work is infeasible.The
idproperty also can be the evidence encoded as a Data URI. However, embedding the evidence as Data URI as the id of the evidence has some caveats:Also attempting to embed large data in a credential JSON is not recommended. You should expect uneven interop performance if you do that.
Instead, the recommendation for embedding the evidence is:
urn:URI for the id.Key provenance
Keys used in proof generation must belong to the issuer. However, there isn't an existing way in current standards to completely assure this provenance.
The following best practices establish a verification mechanism to assure that the issuer is the owner of the key used in a credential.
Linked Data proof
Linked Data Proofs defines a method to get the public key (via
verificationMethod) which, as defined by Verifiable Credential Data Integrity 1.0, implies the dereference of a controller document.Section 2.6 of Verifiable Credential Data Integrity 1.0 describes a way to verify the association of the verification method with an issuer:
We recommend following this practice. As an issuer, then, you must set the value of the controller as the
idof the issuer.External proof
When using an external proof, an issuer must set either the
kidorjwtfields of the JOSE header of the JWS.kidis an URI that can be dereferenced to an object of type JWK representing the public key, wetherjwtis the representation of the public key.In order to assure key provenance, we recommend the use of a JWK Set (JKWS) JSON Web Key (JWK). This set, following this recommendation, should be publicly accessible via the well-known url:
https://{domain}/.well-known/jwks.jsonThe reponse of a request to this url is a JSON-serialized representation of the JKWS with the media type
application/jwk-set+json.When using the
kidattribute, an issuer must set it to an existing key in its set. On the other hand, when using thejwtattribute, the key set in this field must be one of the keys in the set.Issuing platforms with multiple issuers
JSON Web Key (JWK) allows adding additional members to the JWK format:
We propose leverage this to add a new member
issin the JWK for the issuer'sid.JWK Set endpoint
Following this recommendation ultimately means that, for an issuer to be trusted, the endpoint for the issuer's JSON Web Key Set should be publicly available at any time a credential is verified, which can happen long after the issuing of the credential. If don't, there's a potential issue of a valid credential not accepted because the endpoint is no longer available.
Following this recommendation, thus, implies a commitment for the issuer to maintain its JWK Set and publicly expose it through the endpoint.
Privacy
Privacy of grades and evidence
Results or evidence fields may contain data that should be kept confidential or require learner’s consent to disclose. These includes items such as grade data or evidence documents that may have personally identifiable information (PII). Unless it is protected, this data will be transmitted in a “SHARE” transmission of the full payload (i.e.: Baked image, API request, or Web link to an HTML version of a credential) or in a verified presentation request from a verifier application.
The verified credentials data model 2.0 outlines ways that verified credentials (VCs) can manage data privacy by either an enveloping proof or an embedded proof. The BBS or SD-JWT signing methods can support selective disclosure or encryption of the data (such as with TLS), while a Linked Data Proof does not. CBOR encoding can also be used within the JSON of a credential for selective disclosure so only parts of the specific badge data are shared and can handle the inclusion of zero-knowledge proofs. CBOR can be used with the SD-JWT or LinkedData Proof methods but only manages the selective disclosure and encryption of the protected data at the time of the verified presentation request.
It is recommended that the issuer provide information on which fields may be governed by selective disclosure and the method used in the beginning of the credential payload.
Context of grades
In the case where an issuer is intending to implement credentials for the purpose of documenting all academic activity, grade data might include such use cases as work that is in progress, on hold, provisional, withdrawn, or failed. In this case, it should be required for the issuer to include the ResultStatus. Learners should not be able to disassociate the context of this status from their results if a Holder application implements selective disclosure.
Evidence documents
In the case that a link is included as evidence, it should be immutable. Links that a learner or another party has access to edit (i.e.: YouTube, photo sharing site, document sharing site, etc.) should not be used in a verified credential so that the file is always in the same state as when the credential was issued. The issuer may wish to implement some form of password access control to links and a mechanism for the learner to approve access. It is advisable for Holder applications to implement a process for a verifying application to disclose their identity or reason for a verified presentation request (e.g.: “I need to verify that the course was completed with a passing grade”).
Displayer
Cryptosuites in Linked Data Proofs
Linked data proofs imply the use of a cryptosuite for its generation and further verification. The Open Badges 3.0 and Comprehensive Learner Record 2.0 specifications define cryptosuite(s) supported by 1EdTech conformance tests. Verifiers should expect to encounter credentials secured with these cryptosuites.
Cryptosuites evolve and produce new versions occasionally. The 1EdTech conformance process may over time support updated version or additional cryptosuite options, and there are issued credentials with a proof generated using a cryptosuite now considered deprecated. Verifiers should consider supporting prior cryptosuites, especially for cases when the credential doesn't define the refresh service. Issuers that do support refresh services may be able to update the credential to use a newer cryptosuite.
Prior (deprecated) cryptosuites identified in OB 3.0 and CLR 2.0 drafts include:
eddsa-2022Ed25519Signature2020Key provenance and issuer identity information
Keys used in proof generation must belong to the issuer. However, there isn't a existing way in current standards to completely assure that the key that signed a credential proof is associated with the issuer identifier. These steps do not ensure that issuer metadata expressed in a credential is accurate, such as its name, url or contact email. Displayers may choose to authenticate the issuer identifier against a trusted list of issuers obtained out of band of the credential. When such a mechanism isn't available, the displayer should mark issuer data included in a credential as unverified.
The following best practices establish a verification mechanism to assure that the issuer is the owner of the key used in a credential.
Linked Data proof
Linked Data Proofs defines a method to get the public key (via
verificationMethod) which, as defined by Verifiable Credential Data Integrity 1.0, implies the dereference of a controller document.Section 2.6 of Verifiable Credential Data Integrity 1.0 describes a way to verify the association of the verification method with an issuer:
We recommend following this practice. As an verifier, then, you must check that the value of the controller is the
idof the issuer.External proof
When using an external proof, an issuer must set either the
kidorjwtfields of the JOSE header of the JWS.kidis an URI that can be dereferenced to an object of type JWK representing the public key, wetherjwtis the representation of the public key.Section 6.3.1 of Securing Verifiable Credentials using JOSE and COSE extends the definition of
kidasWith these two premises, the recommendation for verifying key provenance is using JWK Set. A verifier must, then, get the public JKWS of the issuer for further check of the provided key.
In order to get the issuer's JKWS, a verifier must build a well-known url with the
authoritypart of the issuer'sid(Uniform Resource Identifier (URI): Generic Syntax):https://{authority}/.well-known/jwks.jsonA verifier must make a HTTP request to this endpoint with an accept header of
application/jwk-set+json. The response of this call must a JWKS.After the request, a verifier must check that the provided key in in the returned set. If the key in the JOSE Header in referenced by the
kidfield, thiskidmust be in the set. On the other hand, if the key is represented by thejwkfield, thisjwkmust be in the set with any specifiedkid.If the found JWT in the set contains the member
iss, this must be equal to the issuer'sid.Verifiable Credentials v1.1
One of the main reasons for upgrading Open Badges and Comprehensive Learner Record to a new major release was the alignment of the specifications with W3C's Verifiable Credentials Data Model.
The alignment to an external specificacion require some sort of change management. During the development of both Open Badges Specification v3.0 and Comprehensive Learner Record Standard v2.0, the current version of W3C's Verifiable Credentials Data Model was Verifiable Credentials Data Model v1.1, version with the specificacions went to Candidate Public Final.
During the time Open Badges Specification v3.0 and Comprehensive Learner Record Standard v2.0 were in Canditate Public Final, W3C's Verifiable Credentials Data Model was upgraded to Verifiable Credentials Data Model v2.0. After an analysis of the changes the working group decided to upgrade Open Badges Specification v3.0 and Comprehensive Learner Record Standard v2.0 to align with the newest version of W3C's VC.
However, there were already existing issued credentials based in the older version of W3C's VC. These credentials, until upgraded to the newest version, must be valid. Therefore, the displayer certification requires validation of credentials issued with this old version.
Changes
In terms of data model, the main changes between versions of W3C's VC are:
New context URI. While in version 1.1 was
https://www.w3.org/2018/credentials/v1, in version 2.0 ishttps://www.w3.org/ns/credentials/v2. Also, when signing with Linked Data Proofs, version 1.1 required the addition of the contexthttps://w3id.org/security/data-integrity/v1. In version 2.0, those terms are included in the main context file.Validity period.
validFromandvalidUntil, in version 2.0, replaceissuanceDateandexpirationDate, in version 1.1In terms of file format, version 2.0 adds the
application/vc+ld+jsoncontent type, that wasn't defined in version 1.1.In terms of integrity, especially in the JSON Web Token Proof Format, version 2.0 removes the requirement of storing the payload of the credential in the
vcclaim of the JWT. Instead, the whole JWT body is the payload credential.Verification
Displayers must be able to verify
OpenBadgeCredentials andClrCredentials built under versions 1.1 and 2.0 of W3C's VC specification.In order to successfully verify a received credential, the first step is to identify which version of Verifiable Credential Data Model is based on. This identification depends mainly of the integrity of the credential, especifically on the proof used.
For instance, in credentials issued with the Linked Data Proof, where the payload received by the displayer is the JSON of the credential, the first item in the
@contextarray will determine which version of W3C's VC the credential is based on:https://www.w3.org/2018/credentials/v1, for Verifiable Credentials Data Model v1.1https://www.w3.org/ns/credentials/v2, for Verifiable Credentials Data Model v2.0On the other hand, when the credential received by the displayer was issued with the JSON Web Token Proof Format, the displayer should check wheter there is a
vcclaim in the JWT body, as its existance may indicate that the credential is based on Verifiable Credentials Data Model v1.1. However, the displayer must also check the value of the first item in the@contextarray to match the value of each W3C's VC version, and mark the credential as invalid when the value in the@contextarray doesn't correspond to the claim within the JWT where the payload of the credential was stored.The specifications provide some JSON schemas supporting this duality in a way that succeed for valid – in terms of data schema - credentials based either on Verifiable Credentials Data Model v1.1 or Verifiable Credentials Data Model v2.0.
These schemas are:
The specifications also provide JSON schemas supporting this duality for
EndorsementCredential's:Host
Open Badges 3.0 API recommendations
Consider the following example two products using the OB 3.0 API to interact:
Example: Sending an Open Badge to a credential backpack via API
This is a long user workflow. What makes this interaction successful?
Other recommendations related to implementing the API include:
The OB API enables key use cases for interoperability between web services that manage Open Badges on holders' behalf. This is centered on an ecosystem of backpacks and clients. "Backpack" and "web wallet" are commonly used terms to refer to a web service that holds Open Badges and/or CLR credentials for learners, enabling them to manage and share them. Clients each often primarily act to issue credentials or to verify credentials to display or convert into local understanding of someone's capabilities and accomplishments. Typically learners authorize issuers to send their credentials to backpacks and then from those backpacks, authorize verifier clients to access them.
This is an ambitious ecosystem to propose, even though users are familiar with the underlying OAuth and OpenID Connect experiences that tie together dozens of their online accounts. There is the addition of dynamic client registration and the wide variety of optional components these specifications feature. Implementers should prioritize high success-rate user experiences in credential acceptance.
Products that best aim to teach users a controlled number of concepts and provide interfaces offering easy successful options for the most common actions have a better chance of ensuring learners can take advantage of their digital credentials. No learner should be disadvantaged by poor interoperability experiences and dead ends.
CLR 2.0 API recommendations
As
ClrCredentials bundle a number of individualOpenBadgeCredentialstogether, they sometimes offer additional information about the relationships between elements. Implementations of the CLR API should be done for use cases where the signed bundles (signed by the original issuers) or the inclusion of associations provides benefit to users.Example: Sending a CLR to a credential backpack (host) via API
Protocols for connection to Verifiable Credentials Wallets
While the OB 3.0 and CLR 2.0 APIs serve use cases for web services to verifiably exchange credentials on behalf of holders, the Verifiable Credentials community is exploring how more portable wallets, often operating on mobile devices which cannot serve HTTP requests can serve additional use cases. All Verifiable Credentials, including Open Badges and CLRs can and will be communicated over a range of protocols. This is a space that is seeing significant experimentation pre-standardization.
Implementers are encouraged to cooperate through communities like 1EdTech to ensure high-quality user experience in the exchange of credentials between their products, both via OB and CLR APIs and emerging protocols to carry these credentials into next-generation use cases. When new user experience patterns are presented that aim to become universal, take care to help the user through the workflow, and give them fallback solutions whenever possible.
Protocols under development to transport Verifiable Credentials including Open Badges and CLR include Credential Handler API (CHAPI), DIDComm, and OID4VC.
Example: The experience of a learner who receives their CLR
Luis now is viewing his CLR in his backpack, a web service that holds Open Badges & CLR Verifiable Credentials on his behalf:
Here, Luis walks through the experience of downloading a mobile app to use as a wallet for credentials including his
CLRCredentialand severalOpenBadgeCredentials. This issuer app seems to be compatible with a wide variety of web wallets, perhaps even through implementing multiple protocols used by these wallets with a variety of options. Some issuer services may be operating with connections to fewer or different wallet applications.Some recommendations for pre-standardization implementation of service connection protocols include:
Sharing Open Badges and CLR Links as URLs and to Social Media
The URL is the universal mechanism for sharing content on the web. URLs provide the easiest mechanism for badge recipients to share their achievements on social media, in resumes, and job applications. The vast majority of last-generation Open Badges 2.0 and CLR 1.0 credentials in production support URLs for both verification and sharing. Learners' need to be able to place their achievements verifiably into platforms via URL sharing will continue, but platforms that hold their data are encouraged to take advantage of new OB 3.0 and CLR 2.0 capabilities to grant greater control over sharing to data subjects themselves as they implement share by URL capabilities.
Recommendations for the use of share URLs include:
id, such asAchievementendpoints or Open Badges 2.0 verification endpoints are used for legacy support by an issuer that also publishes objects using the current version of the standard, use content negotiation on sharing URLs to enable the presentation of Use Open Graph Protocol tags on the sharing URLs to enable easy generation of card previews.Baked badges and iOS devices
Starting iOS 16, this operating system strips EXIF data from photos when saved in the Photos or the Files app. This means the credential is stripped, so no badges can be exchanged as baked images on an iPhone that has been using an operating system for the last few years.
Using Reference Implementations
The Reference Implementation is an 1EdTech implementation of Open Badges 3.0 and Comprehensive Learner Record 2.0 which contains a Issuer, a Displayer and a Host. The reference implementation is written in Java. We provide source code and a hosted version of the tool. Our reference implementation has passed Conformance Certification and is complete with 100% automated tests. Developers can run it locally and develop against this tool. We are working to have this available in multiple languages and common functionality eventually available as libraries. From OB 3.0 and CLR 2.0 on, 1EdTech, with the support of the working group, will be keeping this implementation up-to-date, to have all versions supported.
Conformance and Certification
The Open Badges Specification Conformance and Certification Guide v3.0 covers the specific requirements that implementers must cover in order to achieve certification for a successful implementation of Open Badges 3.0. An accompanying CLR 2.0 guide is forthcoming. Here is a quick summary of the types of services that can be certified.
Certified Roles in Open Badges
Services implementing Open Badges fall into one or more ecosystem roles, depending on their relationship to issued credentials. These roles are named "Issuer", "Host", and "Displayer". Issuer services may also add on API support as an additional optional certification level, whereas API support is required for the other two roles. This recognizes that some issuers deliver signed credentials directly to holders via file downloads or potential integrations with wallet
OpenBadgeCredentialis produced by the tested product.Certified Roles in CLR
Certified CLR 2.0 services require use of the API in the same roles as Open Badges, except that the credentials transmitted over the API must be
ClrCredentials meeting the requirements displayed by the test system. Issuer-only certification without API support is not listed as an option for CLR.Conformance Testing Process
Follow the conformance and certification guide listed in the specification for detailed instructions on conformance. A 1EdTech member organization wishing to submit their product for conformance certification will undergo a semi-automated process, following onscreen instructions to run the tests. Then they submit their test results for review by 1EdTech, and if they successfully meet the requirements, the product will appear in the TrustEd Apps Directory, where consumers may find it under filters for each of the implementation roles they are looking for a product to serve.
Migrating from OB 2.0, OB 2.1, and CLR 1.0
Open Badges 3.0 and Comprehensive Learner Record 2.0 are major releases, and objects published under these versions are not backwards-compatible
Issuers who use Open Badges 2.0 typically make available standard-compliant endpoints for each Issuer Profile, BadgeClass, and Assertion. In addition to enabling verification of their badge awards, these endpoints often also serve to present human-readable information to clients in HTML when HTML is requested by browsers. Social media networks to which badge awards are shared gather information to display awards from these endpoints as Open Graph Protocol metadata. Exceptions to the pattern of one endpoint per Assertion or BadgeClass occur for implementers who have chosen to use OB 2.0 signed verification for assertions or ephemeral BadgeClass IDs in the
urn:uuidnamespace.For any system already using hosted endpoints for these objects, use cases remain within the 3.0 ecosystem to continue that support in addition to delivering these objects compliant with 3.0. In OB 3.0 and CLR 2.0, assertions become
OpenBadgeCredentialsorAchievementCredentials(an alias), andBadgeClassesbecomeAchievements, which may be more likely to useurn:uuididentifiers. As the ecosystem transitions to support OB 3.0 serialization of these objects, some products will continue to support OB 2.0 representations, so an efficient transition for issuer services likely involves a window of continued support for 2.0 with no breaking changes for clients who rely on it today.As portable signed credentials, there are now expanded privacy options for learners to control how their data is used and shared. The OB 3.0 and CLR 2.0 releases represent a beginning, but these capabilities will take time and require the launch of new features and new products to deliver on their potential impact. A transition to this generation of specification should be non-destructive but should also move quickly to take advantage of new capabilities.
The recommendations in this guide are intended to identify opportunities for interoperable implementation of of the Open Badges and Comprehensive Learner Record specifications. This serves goals of enabling (a) immediate improvement of last-gen credentials due to next-gen thinking, and (b) gradual technology change.
How to support both OB 2.0 and OB 3.0 as an Issuer
The quickstart in this implementation guide provides an example implementation using a
did:webissuer identifier, HTTPS Achievement identifier, and aurn:uuidin theOpenBadgeCredential. Meanwhile, an issuer may wish to avoid breaking support for OB 2.0 to ensure learners can still use their badges in tools that do not yet support the new version. This is possible and can work elegantly to express the relationships between related objects if a few steps are followed. The same achievement data may be exposed in OB 2.0 and OB 3.0/CLR 2.0 formats. It is not advisable to attempt to publish a combined expression of an entity that is compatible with OB 3.0/CLR 2.0 and the previous version formats, but it is possible to express the relationship between related objects using different IDs for the new versions of these specifications.For example, a
relatedassociation may be made within anAchievementand the OB 2.0 equivalentBadgeClassthat represents the same achievement. The issuer service does not store the data in two separate formats, but it is capable of serializing the data into the relevant formats when requested at different endpoints. It is a helpful hint to include the IRI of the legacy BadgeClass type (but because the termBadgeClassdoesn't appear in the OB 3.0 context and the two contexts are not compatible with one another to be applied to the same document, the full IRIhttps://w3id.org/openbadges#BadgeClassis used here).Example: OpenBadges 3.0 Achievement with linked OpenBadges 2.0 BadgeClass via related association
https://example.com/badgeclasses/c3c1ea5b-9d6b-416d-ab7f-76da1df3e8d6https://example.com/achievements/c3c1ea5b-9d6b-416d-ab7f-76da1df3e8d6Achievementformat.An OB 2.0 related property could be implemented to make the reverse connection from the OB 2.0 BadgeClass:
Example: OpenBadges 2.0 with related OpenBadges 3.0
Achievementis not defined in the OB 2.0 context.The issuer profile shown in the quickstart uses a
did:webidentifier, and the issuer must use an HTTPS identifier for the OB 2.0 hosted profile. Within the 3.0Profileas embedded in a credential, anotherIdentifierproperty is described that may be used to link to the 2.0 representation.Additionally, within the DID Document context, an
alsoKnownAsproperty is available, that may express the HTTPS id of the OB 2.0 representation of the profile.Example: Issuer profile relation between Open Badges 3.0 and Open Badges 2.0
Within the OB 2.0 representation of the issuer, a reverse link may be made with
related, as was done with the BadgeClassExample: Issuer profile relation between Open Badges 2.0 and Open Badges 3.0
And finally, at the level of the
OpenBadgeCredential, an association to the original OB 2.0 Assertion may be made using "evidence". The use of "evidence" instead of a more complicated construction withrelatedenables human-readable display of a useful link to the original document in as many cases as possible, by any displayer that supports the concept of evidence.Example: Upgraded OB 2.0 assertion included within CLR 2.0
Notes about this example:
urn:uuididentifierhttps://w3id.org/openbadges#Assertionas an additional type for theEvidenceitem. Consumers should understand that if they desire, they may verify the original using OB 2.0 protocols.nameanddescriptionappear in the Evidence record describing the upgrade process.How to migrate from CLR 1.0 to CLR 2.0
There is less of an ecosystem of consumption for CLR 1.0 than for OB 2.0, and the increased complexity of a CLR makes support for multiple versions more expensive than for Open Badges, so it is not likely to be worth the investment to maintain simultaneous serialization of both formats of packaged records. A CLR 2.0 platform that also serves as the issuer for the
OpenBadgeCredentialspackaged within theClrCredentialmay choose to implement the above backwards-compatibility steps for increased visibility and shareability of the individual achievements. At the level of the CLR, it is likely that new consumption products coming on the scene will implement the capability to process CLR in the new 2.0 format rather than the legacy version.Migrating to CLR 2.0 involves a replacement of endpoints where CLR 1.0 documents were available with the implementation of the CLR 2.0 API. If there are existing clients or relying parties on the CLR 1.0 representations, the best path is to work with those clients to upgrade to 2.0 representations and transfer via API and then remove the 1.0 endpoints once a 2.0 channel has been established.
Including older Open Badges in CLR 2.0
When Comprehensive Learner Record (CLR) issuers want to include Open Badges issued over time, these credentials must match the expected schema of an OB 3.0
OpenBadgeCredential. But the CLR issuer might have collected them in an older format, such as OB 2.0, which largely expressed the same achievement information, except in a different schema. To ensure that consumers are able to process data included in a CLR efficiently, the CLR issuer may use the technique above to represent the OB 2.0 data in OB 3.0 format with a reference to the original as "evidence".If the issuer of the CLR is the same as the issuer of the embedded upgraded credentials, they may sign each with their own key, presumably the same used to sign the outer CLR itself. If the original issuer of an embedded credential is another entity, the embedded
OpenBadgeCredentialmay be included without signature. In either case, therelatedreference back to the original enables consumers or viewers to trace the verification back to the original. The inclusion of the unsigned third party credential implies the CLR issuer's verification or trust of the original. Consumers may perform their own verification of the referenced original OB 2.0 assertion using the OB 2.0 verification protocols.This approach enables the CLR to meet the schema requirements for CLR 2.0 without leaving behind the millions of achievement assertions issued using previous versions of the Open Badges Specification.
Implementation notes:
Open Badges Extensions
Open Badges 3.0 and Comprehensive Learner Record 2.0 allows extensibility in several ways: data model, extensible enumerated vocabularies and API.
Extending the data model enables the addition of supplementary properties to an existing entity.
This process entails the development of two primary artifacts: a JSON-LD context and a JSON schema. This chapter provides guidance on constructing these essential components.
Sample extension
If you, for instance, want to extend Achievement with a couple of fields, what you have to do is:
Let’s suppose you want to extend
Achievementwith a couple of fields, and decide to name your extension typeMyCustomAchievement. The two new fields to add are:myFieldof typedescription(required)anotherFieldof typeDateTime(optional).Custom JSON-LD context
The first step is to define a custom JSON-LD context with the added attributes. Following our example extension, it would be as follows:
Example: OB / CLR Extension JSON-LD Context
Your credentials MUST include this context in their
@context. ie:Example: Sample Credential with Extension JSON-LD Context
In this example, “https://your_url/your_context” resolves to the above JSON-LD context. Also, the Achievement in your credentials MUST also be of your newly created type. i.e.:
Example: Sample Credential with Extension type
Custom JSON Schema
The next step is to define a custom Define a JSON schema for your new type. Following our example extension, it would be as follows:
Example: OB / CLR Extension JSON Schema
Your credentials MUST include this schema in the credentialSchemaProperty so verifiers can check them against your schema. I.e:
Example: Sample Credential with Extension JSON schema
Example Credential
Getting Help
If you have questions or need help with implementing Open Badges 3.0 or Comprehensive Learning Record 2.0, or achieving conformance certification, here are some available resources:
Linked Data Proof Test Vector for Open Badges 3.0
This chapter is an example of the signing process of a given credential with an Linked Data Proof producing a
DataIntegrityProofof a public key expressed ineddsa-rdf-2022format.Key pair & Multikey
For this example we are using the following keypair:
4bdeafde2ea8beefadd8c699b5c7e0704cf51154d52e17b20b71337ca04cc5a56241a409e6707bb640a0140a8a32bc3d193c33a661747284d6adfa4ed4180be44bdeafde2ea8beefadd8c699b5c7e0704cf51154d52e17b20b71337ca04cc5a5Test data
The credential used in the example is:
Document before signing
Proof before signing
Proof normalized
Document normalized
Document hash (hex)
Proof hash (hex)
Data to sign (hex)
Signature (hex)
Proof value (hex)
Proof
Signed credential
Linked Data Proof Test Vector for Comprehensive Learner Record 2.0
This chapter is an example of the signing process of a given credential with an Linked Data Proof producing a
DataIntegrityProofof a public key expressed ineddsa-rdf-2022format.Key pair & Multikey
4bdeafde2ea8beefadd8c699b5c7e0704cf51154d52e17b20b71337ca04cc5a56241a409e6707bb640a0140a8a32bc3d193c33a661747284d6adfa4ed4180be44bdeafde2ea8beefadd8c699b5c7e0704cf51154d52e17b20b71337ca04cc5a5Test data
The credential used in the example is:
Document before signing
Proof before signing
Proof normalized
Document normalized
Document hash (hex)
Proof hash (hex)
Data to sign (hex)
Signature (hex)
Proof value (hex)
Proof
Signed credential