こんにちは、富士榮です。
MicrosoftからMVP(Most Valuable Professional)というアワードをいただき初めて今年で15年目、という話を前に書きましたが、最近この手のアワードやIT系の資格試験などではOpenBadge形式で資格証明がもらえることがあります。
これまで何度かイベントではOpenBadgeの中身について話をしてきましたが、要するにPNGやSVGファイルの中身(PNGならiTXt領域、SVGならopenbadge属性)へJSON-LDで記述されたクレデンシャルの情報を埋め込んでいます(OpenBadge 2.0、Hosted形式の場合)。
この埋め込み作業のことをBake(ベイク)と言い、こちらに技術仕様が公開されています。
https://www.imsglobal.org/sites/default/files/Badges/OBv2p0Final/baking/index.html
なお、最近はOpenBadge 3.0がW3C Verifiable Credentials Data Model 2.0を使って定義されようとしています。(Finalizeと言いつつVCDM2.0がFinalにならないのでどうするつもりなんだ、という話もありますが)
OpenBadgeにはHosted型とSigned型の2種類が定義されており、これまでは検証時に発行者のURLへ問い合わせを行うHosted型が中心でしたが、OpenBadge 3.0からはVerifiable Credentialsを利用することでSigned型(バッジ単体で検証ができる)が中心になってくると思われます。
ただ、現状はMVPバッジはCredly社(IT系の資格の受験をするときにお世話になった方も多いであろうピアソン社を数年前に買収した会社で民間の資格証明の最大手ですね)が発行するOpenBadge 2.0、Hosted型のバッジです。
こんな感じでCredlyのバッジポータルでバッジの確認やダウンロードができます。
ちなみに実際のOpenBadgeイメージはこちらから取得できますので、こうやってブログやWebサイトで他の方へ提示(配布)することもできるわけです。
先ほど書いた通りiTXt領域にJSON-LD形式で埋め込まれているわけですが、IMS Globalがこちらで検証サイトを公開しているので、こちらを使いましょう。
https://openbadgesvalidator.imsglobal.org/
このサイトを使って取り出したOpenBadgeがこちらです。
{ "input": { "value": "https://www.credly.com/api/v1/obi/v2/badge_assertions/8793fdbf-80a5-4240-977e-12ac45574df3", "input_type": "url" }, "graph": [ { "@context": "https://w3id.org/openbadges/v2", "type": "Assertion", "issuedOn": "2024-09-17T00:00:00.000Z", "recipient": { "type": "email", "identity": "sha256$071281e466032326ffe4c3238545d31970b2b61d75fae181a283ac0aace09264", "hashed": true }, "badge": "https://www.credly.com/api/v1/obi/v2/issuers/214390fb-07bc-4575-80f2-f2c325f71c49/badge_classes/2b797f06-fdd4-4ec7-b13c-e8f79915da0c", "verification": { "type": "HostedBadge" }, "evidence": [], "id": "https://www.credly.com/api/v1/obi/v2/badge_assertions/8793fdbf-80a5-4240-977e-12ac45574df3" }, { "@context": "https://w3id.org/openbadges/v2", "tags": [ "Community", "Leadership", "Technology" ], "name": "2024 Microsoft Most Valuable Professional (MVP)", "image": "https://images.credly.com/images/9e9359a4-fe7e-4e02-8eb0-6c2b7947345a/image.png", "alignment": [], "criteria": { "narrative": "Award: Individuals must have deep knowledge and expertise aligned to a Microsoft product or service or related open-source technologies. Through community work, qualifying applicants should be able to demonstrate their technical expertise. https://mvp.microsoft.com/", "id": "https://www.credly.com/org/microsoft-student-programs/badge/2024-microsoft-most-valuable-professional-mvp" }, "id": "https://www.credly.com/api/v1/obi/v2/issuers/214390fb-07bc-4575-80f2-f2c325f71c49/badge_classes/2b797f06-fdd4-4ec7-b13c-e8f79915da0c", "type": "BadgeClass", "description": "The Microsoft MVP Program recognizes outstanding members of technical communities for their community participation and willingness to help others. Above all else, it is a people-powered program, made up of individuals whose passionate commitment to innovation has made its dynamic growth possible.", "issuer": "https://www.credly.com/api/v1/obi/v2/issuers/214390fb-07bc-4575-80f2-f2c325f71c49" }, { "@context": "https://w3id.org/openbadges/v2", "type": "Issuer", "id": "https://www.credly.com/api/v1/obi/v2/issuers/214390fb-07bc-4575-80f2-f2c325f71c49", "name": "Microsoft MVP and Student Ambassadors Communities", "image": "https://images.credly.com/images/8f11d73e-9c33-4788-a602-88c761957c90/blob.png", "description": "The Microsoft MVP and Student Ambassadors Programs are communities where student experts, technology professionals or industry leaders transform their passions and skills into globally recognized community leadership.", "email": "info@credly.com", "url": "https://mvp.microsoft.com/" } ], "report": { "valid": true, "messages": [], "warningCount": 0, "validationSubject": "https://www.credly.com/api/v1/obi/v2/badge_assertions/8793fdbf-80a5-4240-977e-12ac45574df3", "openBadgesVersion": "2.0", "errorCount": 0 } }
- 到達性確認を行うことで提示者が当該メールアドレスに対してアクセスが可能な状態であることを確認する
- 到達性確認ができたメールアドレスとバッジを検証URL(発行元。今回のケースだとCredly)へ投げ込む
- 検証URL側は自身が管理するsalt値を使って送られてきたメールアドレスの値をSHA256(もしくはMD5)でハッシュ化する
- バッジの中にはいっているidentityの値と生成したハッシュ値が同一であることを確認する(提示者はバッジの中を見てもメールアドレスの値がハッシュ化されているため、誰のバッジかわからない。持ち主だけがバッジ発行時のRecipient情報として設定したメールアドレスを知っているので発行対象の主体とバッジの指し示す主体が一致しているであろうことを推測する)
"recipient": { "type": "email", "identity": "sha256$071281e466032326ffe4c3238545d31970b2b61d75fae181a283ac0aace09264", "hashed": true },
0 件のコメント:
コメントを投稿