Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Work in Progress: Implementation Guide #501

Merged
merged 57 commits into from
Apr 18, 2023
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
b7c1a7a
Initial outline
xaviaracil Nov 17, 2022
e780d70
Add implementation guide introduction skeleton
ottonomy Dec 1, 2022
c1b677d
Stub out recommended practices for several challenges and use cases
ottonomy Dec 14, 2022
e8090cb
IMPL: Add notes about DID methods to recommended practices
ottonomy Dec 20, 2022
e3ce9a0
IMPL: Add references to use cases in each spec
ottonomy Dec 20, 2022
35365de
IMPL Add note that CLR full document set should be linked
ottonomy Dec 20, 2022
1d87e92
Use prettier for formatting of impl markdown files
ottonomy Dec 29, 2022
232fba0
Add note about revocation / status checking
ottonomy Jan 10, 2023
0b3f6e3
Add skeleton of crypto algorithm selection section
ottonomy Jan 10, 2023
0685d79
Reference 1EdTech refresh and revocation companion specs
ottonomy Jan 11, 2023
63eb80c
Switch which alias is used to match the rest of the spec.
ottonomy Jan 12, 2023
efc2b61
Add quickstart user stories and note about achievement IDs
ottonomy Jan 12, 2023
bfda823
Finish incomplete paragraph about issuer identifiers.
ottonomy Jan 12, 2023
4284426
Some words about getting help
xaviaracil Jan 12, 2023
dc972fc
Update spelling, formatting of getting help.
ottonomy Jan 12, 2023
5871b44
written down some words
xaviaracil Jan 25, 2023
050d3b9
Update section on conformance certification
ottonomy Jan 25, 2023
4a6b141
Clarify identifiers for issuer
ottonomy Jan 26, 2023
effd223
Correct mistaken did:web identifier
ottonomy Feb 9, 2023
24189c6
Remove todo
ottonomy Feb 16, 2023
3785012
apply consistent formatting to reference-impls
ottonomy Feb 16, 2023
49fe1f9
Added some references
xaviaracil Feb 20, 2023
915db78
Written down some words in `OB/CLR in the 1EdTech Ecosystem`
xaviaracil Feb 20, 2023
f69b405
added some thoughs in VC-OB/CLR relationship
xaviaracil Feb 20, 2023
9271922
Added OAuth 2.0 token acquisition
xaviaracil Feb 21, 2023
ce70b44
Moved provider section down to the chapter
xaviaracil Feb 21, 2023
a8cf40b
Description of some use cases
xaviaracil Feb 21, 2023
c558dd1
CASE and skills
xaviaracil Feb 21, 2023
b1196d2
ServiceDescriptionDocument is extensible, since here only a small sub…
xaviaracil Feb 22, 2023
4ae7505
Adjust language in introduction
ottonomy Feb 22, 2023
2c58760
Clarify skills assertions purpose
ottonomy Feb 22, 2023
70326f3
Adjust language
ottonomy Feb 22, 2023
2ff26c2
Add note about OB 2.0 and 3.0 simul-implementation
ottonomy Feb 23, 2023
77e0508
update contributor affiliation
ottonomy Feb 23, 2023
aa3de00
Add recommendation for CLR 2.0 upgrade path
ottonomy Feb 24, 2023
973f219
Added entry for CLR 2.0 cert suite
xaviaracil Feb 26, 2023
fa69304
Fixed some bibliographic references
xaviaracil Feb 26, 2023
9c494c3
Added entry for DID Web Method Specification
xaviaracil Feb 26, 2023
5c86748
Fixed biblographic references
xaviaracil Feb 26, 2023
4250d9a
Fixed bibliographic references
xaviaracil Feb 26, 2023
8bd9579
Style and wording updates. WIP.
justinpitcher Feb 27, 2023
cb827a9
Merge pull request #511 from 1EdTech/feature/impl-guide-editing
xaviaracil Feb 27, 2023
d96a879
Defined 'we'
xaviaracil Feb 27, 2023
fd766ff
Moved section upmost in the chapter
xaviaracil Feb 27, 2023
dfa00fa
Added a note about token revocation
xaviaracil Feb 27, 2023
7386c9a
Formatting changes
xaviaracil Feb 27, 2023
8d8dff8
Added contributors of impl guide
xaviaracil Feb 27, 2023
ebbc026
Fixed local contributors location
xaviaracil Mar 1, 2023
0c068b8
Links to spec points now to 1EdTech's site
xaviaracil Mar 1, 2023
ef01a99
Updated date
xaviaracil Mar 1, 2023
059630d
Applied consistent capitalization for headings.
xaviaracil Mar 1, 2023
dda2628
Applied desired consistent formatting for code snippets using <pre>
xaviaracil Mar 1, 2023
7ff7794
Updated to new version of context.json
xaviaracil Mar 1, 2023
d0242f2
Changed document status
xaviaracil Mar 30, 2023
4ca3a97
Added link to certification suite
xaviaracil Mar 30, 2023
f57c531
Reference impl is written is java, not .net
xaviaracil Mar 30, 2023
461d09d
Merge branch 'develop' into feature/impl-guide
xaviaracil Apr 18, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ob_v3p0/impl/.prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"trailingComma": "es5",
"semi": false,
"singleQuote": true,
"printWidth": 80,
"tabWidth": 4,
"proseWrap": "always"
}
Comment on lines +1 to +8
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note this .prettierrc.json will be removed before the final pull request. As a separate issue, a .editorconfig or similar may be added to the repository, consistently with 1EdTech architect recommendations for all next-generation 1EdTech specs.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...begin spaces vs tabs argument?

42 changes: 42 additions & 0 deletions ob_v3p0/impl/conformance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
## Conformance and Certification

Open Badges and CLR enable implementers to choose specific roles their product
fills and receive certification for the capabilities of that role.

### Certified Roles in Open Badges

TODO the Conformance and Certification Guide in this repo lists the roles as
"Issuer", "Displayer", "Host" in one spot, and then Service Consumer (Read),
Service Consumer (Write), Service Provider (Read), Service Provider (Write), and
it hasn't yet incorporated the idea of "issuer only" certification that was
referenced in recent meetings. Follow up and make consistent.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

may be captured in the todo, but would be helpful to incorporate VC terminology such as Issuer and Holder into the below bullets.


- Resource Server: A product implementing the server side of the Open Badges
API that holds badges on behalf of data subjects or holders and controls API
access to them. The Resource Server responds to automatic registration
requests, authorization grant flow initiations, and authenticated resource
requests via the API endpoints. The Resource Serve is also called "Provider"
in the IMS Global Security Framework.
- Client: A product implementing the client side of the Open Badges API,
either to send `OpenBadgeCredential`s to a Resource Server or to request
them from such a server. The client initiates registration of itself with
the server, negotiates authorization requests via code-based grant
redirection flows, and then makes requests to resources (badges) held by the
Resource Server.
- Resource Server (read only?): TODO are we doing this one like in 2.1 --
where is the list of roles?
- Issuer Only: a product that is capable of signing Verifiable Credentials
compliant with the Open Badges data model but who does not implement the
Open Badges API.

### Certified Roles in CLR

- Resource Server
- Client
- Resource Server (read only?)
- Issuer Only

### Conformance Testing Process

Follow the conformance and certification guide listed in the specification for
detailed instructions on conformance.
378 changes: 378 additions & 0 deletions ob_v3p0/impl/getting-started.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions ob_v3p0/impl/help.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## Getting Help
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding instructions here assigned to @xaviaracil


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:

- [Public Forum](https://www.imsglobal.org/forums/open-badges-community-forum/open-badges-community-discussion) for all members of the 1EdTech community.
- Affiliate Forum for Learning Tools and Content Alliance, Affiliate, and Contributing Members.
- 1EdTech Contributing Members have access to private github repositories and a slack channel for Digital Credentials Project Group discussions and collaborations. Contact an 1EdTech staff member to gain access.
- [Digital Credentials and Open Badges FAQs](https://support.imsglobal.org/support/solutions/48000452348) If you have a question, an answer may already be waiting. If not, please [contact us](https://www.imsglobal.org/contactus.cfm).
102 changes: 102 additions & 0 deletions ob_v3p0/impl/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
## 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 `OpenBadgeCredential` is digitally signed by its issuing
organization as Verifiable Credentials compatible with the [[vc-data-model]].
Issuers may bundle together multiple related achievement credentials into
transcripts and other longitudinal records for an individual learner in a CLR as
a `ClrCredential`, which is also signed using the same technique as the
individual credentials. Additionally, credentials can be augmented with an
`EndorsementCredential` from 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 `OpenBadgeCredential` and `ClrCredential` format, 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
roles

#### 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 defined `Achievement`.

### 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](https://1edtech.github.io/openbadges-specification/ob_v3p0.html#use-cases)
include:

- Assertion Issuance to Wallet
- Assertion Issuance Without a Wallet
- Recipient Presentation of Assertion
- License Issuance
- Single Skill Assertion
- Mapping Skills
- Verifying Continuing Education
- Self-assertion
- Endorsement
- Re-issue a <= 3.0 Badge to a 3.0 Badge
- Authorization to Issue Given by Creator to Issuer
- Revocation of an Issued Credential
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd recommend removing Revocation of an Issued Credential unless we are mentioning how revocation would work in the base spec.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a note about how the importance of the use cases and how revocation might be normatively covered in a future version of the spec in commit 232fba0. That's probably the optimal balance--I know some readers are really going to want to see something about revocation in here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Historically it's been an important use-case and I tend to agree people new to this would find a mention of it helpful

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Section 9.1 references a new revocation status solution:

If the credentialStatus property is present, and the type of the CredentialStatus object is "1EdTechRevocationList", determine if the OpenBadgeCredential has been revoked as shown in 1EdTech Revocation List Status Method.

- Badge Class Status

[Comprehensive Learner Record use cases (not yet published)](https://github.com/1EdTech/ComprehensiveLearnerRecord/blob/develop/clr_v2p0/usecases.md)
include:

- Recent graduate wants to hold a copy of their own official transcript
- Job applicant provides proof of degree and transcript to potential employer
- Job applicant provides proof of degree and specific courses/engagements from
the CLR
- Higher Ed Competency-Based Education
- Issuer Asserting All Student Achievements Comprehensively as a CLR
- Issuer Asserting Partial Transcript at Intermediate Points in Learning
Journey
- Issuer Asserting Student Up to Date Partial Transcript of Achievements as
CLR on Request
- Internal Organizational Staff Development and Promotion
- Upskilling with Higher Ed Professional/Continuing Education
- Teacher Placement with a District
- Professional Licensure Test Taker results
- Students in Tutoring Program

### OB/CLR in the 1EdTech Ecosystem
49 changes: 49 additions & 0 deletions ob_v3p0/impl/migrating.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
## 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](https://ogp.me/) 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](https://www.imsglobal.org/sites/default/files/Badges/OBv2p0Final/index.html#SignedBadge)
for assertions or
[ephemeral BadgeClass IDs](https://www.imsglobal.org/sites/default/files/Badges/OBv2p0Final/index.html#BadgeClass)
in the `urn:uuid` namespace.

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 `OpenBadgeCredentials` or `AchievementCredentials` (an alias), and
`BadgeClasses` become `Achievements`, which may be more likely to use `urn:uuid`
identifiers. 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.

The new OB 3.0 and CLR 2.0 specifications each define APIs over which
credentials can be exchanged, from issuers, to holders and then to displayers,
but as these standards implement Verifiable Credentials

As portable signed credentials, Open Badges and CLR will take advantage of newly
expanded options for both the potential of these credentials to contribute to
understanding of skills, qualifications and experience, but also 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.
115 changes: 115 additions & 0 deletions ob_v3p0/impl/ob_impl_v3p0.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<!DOCTYPE html>
<html>

<head>
<meta charset='utf-8'>
<script src='https://purl.imsglobal.org/respec/respec-1edtech.js' class='remove'></script>
<script src='../respec-support/local-biblio.js' class='remove'></script>
<script src='../respec-support/contributors.js' class='remove'></script>
<script src='../respec-support/iprs.js' class='remove'></script>

<!-- Load VC proof add-on -->
<script class="remove" src="https://purl.imsglobal.org/respec/respec-vc.js"></script>

<!-- Load the MPS configuration -->
<script class="remove" src="../mps-config.js"></script>

<!-- Load ajv2019 (Another JSON Schema Validator) if you want your examples validated -->
<script class="remove" src="https://cdnjs.cloudflare.com/ajax/libs/ajv/8.11.0/ajv2019.bundle.min.js"
integrity="sha512-C+5LzjYlC8qhPFniPXiod8efyXJ3fDRCUS87L8o8z5CGt/1LHflMozW6py7s16Z+TJy52C9teuDUq6iq2Nft7A=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<script class='remove'>
var respecConfig = {
mainSpecTitle: "Open Badges Specification",
mainSpecBiblioKey: "OB-30",
specTitle: "Open Badges Implementation Guide",
shortName: "ob",
specNature: "informative", // spec nature is "normative" or "informative"
specType: "impl", // spec type is "main", "cert", "impl", "errata" or other agreed upon string
specVersion: "3.0",
docVersion: "1.0",
specStatus: "Base Document",
specDate: "November 17, 2022",
contributors: _contributors,
localBiblio: _localBiblio,
iprs: _iprs,
xref: [
"did-core",
"vc-data-model"
],

// Remove for IMS Final
otherLinks: [{
key: "Issue Tracker",
data: [{
value: "https://github.com/1EdTech/openbadges-specification/issues",
href: "https://github.com/1EdTech/openbadges-specification/issues"
}]
}],

// Add the MPS configuration to respecConfig
mps: _mps,

// Add VC proof examples
postProcess: [
window.respecVc.createVcExamples
],
};
</script>
</head>

<body>
<section id="abstract">
<h2>Abstract</h2>
<section id="conformance">
<h3>Conformance Statements</h3>
</section>
</section>

<section id="introduction" data-format="markdown" data-include="introduction.md">
</section>

<section class="informative" data-format="markdown" data-include="getting-started.md">
</section>

<section class="informative" data-format="markdown" data-include="recommended-practices.md">
</section>

<section class="informative" data-format="markdown" data-include="reference-impls.md">
</section>

<section class="informative" data-format="markdown" data-include="conformance.md">
</section>

<section class="informative" data-format="markdown" data-include="migrating.md">
</section>

<section class="informative" data-format="markdown" data-include="help.md">
</section>


<section class="appendix informative" id="revisionhistory">
<h1>Revision History</h1>
<table title="Revision History">
<thead>
<tr>
<th>Version No.</th>
<th>Document Version</th>
<th>Release Date</th>
<th>Comments</th>
</tr>
</thead>
<tbody>
<tr>
<td>Version 3.1 IMS Candidate Final</td>
<td>1</td>
<td>November 10, 2022</td>
<td>Covers Issuer, Displayer, and Host conformance and certification.</td>
</tr>
</tbody>
</table>
</section>
</body>

</html>
Loading