NIIオープンフォーラム2023

Mo o dl eと連携し たラー ニングクレ デンシャルの発⾏と利活⽤〜N II様での 実証実験のご報告
2023/05/31
伊藤忠テクノソリューションズ株式会社
OpenIDファウンデーションジャパン
富⼠榮 尚寛N IIにおけ るデ ジタ ルクレ デンシャ ルの状況
FY22調達仕様より• 学認 LMS(学習管理システム)を構築し、研究データ管理について学習するための講座(以下、研究データ管理講座)を提供してきた。 これらの講座では、すべての学習が修了したことを証明するオープンバッジを発⾏してお り、現在、発⾏したオープンバッジをユーザが管理するための保管場所であるデジタルウォ レットを構築し、将来的に提供することを検討している。
• 学認 LMS でも利⽤している Moodle 上で発⾏されたオープンバッジが Verifiable Credentials(以下、VC)に対応するように変換するゲートウェイ、変換された オープンバッジを保管するデジタルウォレット(以下、オープンバッジウォレット)、オー プンバッジウォレット上のオープンバッジを外部サービスへ送信するエクスポート機能を 構築する予定である。

OpenBadgeの活⽤に向けて以下の取り組みを⾏う
1. 汎⽤的な形式で利⽤者⾃⾝で持ち運べる様にする（VCへの変換、Walletへの格納）
2. 外部サービスへ送信できる様にする（Verifierへの提⽰と検証）© ITOCHU Techno-Solutions Corporation2⽬ 指す姿要件
1.

Moodleから学修歴情報を取り出してWalletに格納、利⽤者⾃⾝が持ち運ぶ

2.

Walletに格納された学修歴の提⽰を受けたサービスは真正性・有効性の検証を⾏い権限に応じたサービスの提供を⾏う
例）学認LMSでセキュリティのトレーニングを受けた利⽤者は学認RDMで追加の領域を取得できる検討する実現⽅式• W3C Verifiable Credentials（VC）に対応したWalletを⽤いる• Moodleが発⾏する学修歴（OpenBage形式）をVerifiable Credentialsへ変換するゲートウェイサービスを構築する
システムイメージ

Moodle2. API実⾏
OpenBadge形式
で学修歴を取得

ゲートウェイサービス3. QRコード表⽰〜
読み込み、VC発⾏

1. アクセス

Moodleから学修歴を取得

学修歴の真正性・有効性を検証しサービスを提供

5. Wallet内に保持している学修歴を提⽰

4. VCとして学修歴を保持
学修歴情報を利⽤者⾃⾝Wallet6. 提⽰された学修歴を検証、サービスを提供が持ち運ぶ© ITOCHU Techno-Solutions Corporation3

技 術的要 素の検 討検討対象となった技術要素#

対象

検討区分（⼤）検討区分（⼩）検討内容

A-1

MoodleMoodleからバッジ情報を取得する⽅法

取得単位

ユーザ毎、複数ユーザ⼀括

A-2

発⾏対象ユーザの特定識別⽅法、認証⽅法

A-3

発⾏形式

Moodle独⾃形式、OpenBadge形式

A-4

アクセス制御公開・⾮公開設定による発⾏制御

バッジの管理ユーザインターフェイス

接続先となるMoodle

B-1

ゲートウェイ

取得したバッジ情報の表⽰⽅法

バッジの階層・区分

B-2
B-3
C-1

Wallet

C-2
D-1
D-2

提⽰先システム発⾏するVerifiable Credentialsに含める情報

OpenBadgeとVerifiable Credentialsの要素のマッピング

対象とする属性とマッピング、画像の形式、OpenBadge形式の維持

発⾏したバッジの表⽰⽅法

Verifiable Credentialsの要素と表⽰⽅法

属性の型による表⽰⽅法、履歴の表⽰要求されたバッジの提⽰⽅法

提⽰単位

組み合わせ、複数提⽰提⽰されたバッジの検証⽅法

検証内容

真正性、有効性

バッジ保有者の検索⽅法

バッジ保有者の管理管理⽅法、検索⽅法© ITOCHU Techno-Solutions Corporation

4B ） ゲート ウェイ ︓取得 したバッ ジ情報の表 ⽰⽅法
1.

バッジの管理ユーザインターフェイス︓接続先となるMoodle• 前述のとおりバッジを取得するためにはMoodleへAPIで接続する必要がある。ゲートウェイの位置づけをユーザが複数のMoodleで付与されたバッジをVerifiable Credentialへ変換するためのゲートウェイと位置付ける場合、複数のMoodleとの接続を⾏うことも今後検討することができる（各Moodleに前述のAPI設定が必要。本実証では単⼀のMoodleのみへの接続を⾏った）• ユーザインターフェイスのイメージ
2. 選択したMoodleで認証

1. Moodleを選択 接続先
学認LMS
XX⼤学
YY⼤学

3. 選択したMoodleから取得したバッジを⼀覧
表⽰

2.

バッジの管理ユーザインターフェイス︓バッジの階層・区分• OpenBadgeやVerifiable Credentialには階層の考え⽅は存在しないが、教育現場等においては複数コースを修了することで認定されるようなユースケースも存在するためバッジ内の特定の属性（⼤阪教育⼤学ではVersion属性）を利⽤を利⽤して階層構造を表現することも実運⽤上は必要となる。そのケースにおいてはゲートウェイのユーザインターフェイスも⼯夫が必要となる© ITOCHU Techno-Solutions Corporation

9B ） ゲート ウェイ ︓発⾏ する Veri f i a bl e Creden ti a l sに含める 情報{

https://moodle/badges/assertion.php?obversion=2&b=1a6...中略...c8"recipient": {"identity": "sha256$34911a66e23c17862740a50089904d6d580bf10f0a491924b64905217e554d61","type": "email","hashed": true,"salt": "badges1676119330"},"badge": {"name": "testbadges_jpeg","description": "テスト","image": “data:image/png;base64, /QPAh0k8G・・中略・・U5ErkJggg==","criteria": {"id": "https://moodle.selmid.me/badges/badgeclass.php?id=6","narrative": "Users are awarded this badge when they complete the following requirement:¥n * This badge has to be awarded by a user with the following
role:¥nManager¥n¥n"},
受信者情報"issuer": {（ハッシュ）"name": "New Site","url": "https://moodle.selmid.me/","email": "","@context": "https://w3id.org/openbadges/v2",
取得したimageのiTXTに"id": "https://moodle.selmid.me/badges/issuer_json.php?id=6",
assetion全体をセット"type": "Issuer"},"@context": "https://w3id.org/openbadges/v2","id": "https://moodle.selmid.me/badges/badge_json.php?id=6","type": "BadgeClass","version": "","@language": "en"},"verify": {"type": "hosted","url": "https://moodle.selmid.me/badges/assertion.php?b=0f287357c71a6afd611f6aef35b4ec499173cf6e&obversion=2"},"issuedOn": "2023-02-28T04:06:13+00:00","evidence": "https://moodle.selmid.me/badges/badge.php?hash=0f287357c71a6afd611f6aef35b4ec499173cf6e","expires": "2024-02-28T00:00:00+00:00","@context": "https://w3id.org/openbadges/v2","type": "Assertion","id": "https://moodle.selmid.me/badges/assertion.php?b=0f287357c71a6afd611f6aef35b4ec499173cf6e&obversion=2"}

ログインしたユーザの情報からメールアドレスを取得
バッジ画像

Badgeの発⾏⽇・有効期限
ゲートウェイでの発⾏⽇・VCの有効期限© ITOCHU Techno-Solutions Corporation

11C） Wa l l et
本実証においてVerifiable Credentialを格納するためにMicrosoftが提供しているMicrosoft Authenticator、および伊藤忠テクノソリューションズ株式会社およびBlockBase株式会社のメンバがOSSとして公開（MITライセンス）しているモジュールを利⽤した（Verifiable Credentials関連機能はMicrosoft Entra Verified IDを利⽤）
https://github.com/did-developer-community/custom-identity-wallet
Walletの概要は以下の通りである【基本機能】• Verifiable Credentials発⾏要求の読み取り〜格納• OpenID for Verifiable Credential Issuanceプロトコルに対応したVerifiable Credential発⾏者（本実証においてはゲートウェイ）の提⽰する発⾏要求（⼀般にQRコードに埋め込まれたURL形式）を読み取り、発⾏者へVerifiable Credentialの発⾏を要求する• 発⾏されたVerifiable CredentialをWallet内に格納する• Verifiable Credentialsの提⽰• OpenID for Verifiable Credential Presentationプロトコルに対応したVerifiable Credential検証者（本実証においてはゲートウェイ。提⽰先システム）の提⽰する提⽰要求（⼀般にQRコードに埋め込まれたURL形式）を読み取る• 検証者からの要求されたCredential Typeに適合したVerifiable CredentialをWallet内から取得し、ユーザの選択に従いVerifiable Presentationを作成し、検証者へ提⽰する© ITOCHU Techno-Solutions Corporation12C） Wa l l et︓ 発⾏ した バッジの表⽰⽅ 法
1.

Verifiable Credentialsの要素と表⽰⽅法︓属性の型による表⽰⽅法、履歴の表⽰• Wallet内に格納されるVerifiable Credentialの表⽰に関するユーザインターフェイスは以下を考慮する• 複数のVerifiable Credentialを格納するため、ユーザが保持しているVerifiable Credentialを視認・識別できること• 各Verifiable Credentialが持つ属性情報を確認できること• 各Verifiable Credentialの発⾏〜提⽰等の履歴を確認できること• 以下、WalletとしてMicrosoft Authenticatorを利⽤した場合の例を⽰す

Verifiable Credentialを複数格納

アイコン画像を表⽰

名称を表⽰
含まれる属性情報を表⽰

発⾏者を表⽰

13
発⾏・提⽰履歴を表⽰© ITOCHU Techno-Solutions Corporation

C） Wa l l et︓ 要求 され たバッジの提⽰ ⽅法
1.

提⽰単位︓組み合わせ、複数提⽰• 提⽰先システムがWallet内に格納されるVerifiable Credentialの提⽰を求める際の要求技術仕様はDecentralized Foundationの定めるPresentation Exchangeに基づいて実⾏される（https://identity.foundation/presentation-exchange/spec/v2.0.0/）• よく利⽤される要求パターンとして以下のようなものが考えられ、Walletは対応するユーザインターフェイスの実装が求められる• 複数のVerifiable Credentialを⼀括して要求する• 条件に合致したVerifiable Credentialの提⽰を要求する• 以下、WalletとしてMicrosoft Authenticatorを利⽤した場合の例を⽰す

条件に合致するものが複数あった場合は選択提⽰するVerifiable Credentialをユーザ⾃⾝で選択受け⼊れるVerifiable Credentialの条件
複数のVerifiable Credentialの要求もあり© ITOCHU Techno-Solutions Corporation14D）提 ⽰先シ ステム︓提 ⽰された バッジの検 証⽅法
1.

検証内容︓真正性、有効性• 本実証においてWallet内には以下が格納される• Moodleの発⾏するOpenBadgeから⽣成したVerifiable Credential• ⽣成したVerifiable Credential内に埋め込まれたMoodleが発⾏したOpenBadgeそのもの• 加えて、Walletから提⽰先システムに対してVerifiable Credentialを提⽰する際にはVerifiable PresentationがWalletにより⽣成される• それぞれが検証可能な資格証明ではあるが検証の⽬的と⽅法が異なる
検証対象

検証⽬的

検証⽅法

Verifiable Credential

意図した発⾏者が発⾏したものか

Verifiable Credentialのissに指定されたDIDが指し⽰すDID DocumentがリンクされているDNSドメインが意図するサービス（今回だとゲートウェイ）を管理している事業者と合致しているか︖（事前に受け⼊れる事業者を登録しておく許可リスト⽅式が考えられる）

途中で改ざんされていないか

Verifiable Credentialのissに指定されたDIDが指し⽰すDID Document内に登録されている公開鍵を使ってVerifiable Credential⾃体に施されたデジタル署名の検証ができるか︖

意図したユーザに対して発⾏されたものか（別のユーザから提⽰されていないか）

Verifiable CredentialのcredentialSubjectに指定されたDIDと、Verifiable Presentationのissに指定されたDIDと合致しているか︖

有効なものか（期限が切れていないか）

Verifiable CredentialのexpirationDateを迎えていないか︖

有効なものか（取り消しされていないか）

Verifiable Credentialのissに指定されたDIDが指し⽰すDID Document内に指定された有効性確認⼿法（本実証ではW3C StatusList2021仕様を利⽤）に基づき有効性が確認できるか︖

意図したユーザに対して発⾏されたものか

OpenBadge内のRecipientのIdentityがVerifiable Credential内に記録された識別⼦（本実証ではメールアドレス）と合致するか︖（本実証ではBadgr Validatorを利⽤し検証）

有効なものか（期限切れ、取り消し済
みでないか）OpenBadgeのAssertionを正しく検証できるか︖（本実証ではBadgr Validatorを利⽤し検証）

途中で改ざんされていないか

Verifiable Presentationのissに指定されたDIDが指し⽰すDID© I T ODocument内に登録されている公開
CHU Techno-Solutions Corporation
鍵を使ってVerifiable Presentation⾃体に施されたデジタル署名の検証ができるか︖

OpenBadge

Verifiable Presentation

15D）提 ⽰先シ ステム︓バ ッジ保有 者の検索⽅ 法
2.

バッジ保有者の管理︓管理⽅法、検索⽅法• バッジに関する情報を保持している箇所は「Moodle」、「ゲートウェイ」、「Wallet」の3か所となる• 提⽰先システム側からバッジを保有している可能性があるユーザに対してバッジの提⽰を求めることで、ユーザに対するベネフィットを提供したり、アクセス制御を⾏うためには、以下の⽅法が考えられる• 提⽰先システムで発⾏されたバッジと発⾏先ユーザの⼀覧を取得し利⽤する• 提⽰先システムにユーザがアクセスした際にバッジを提⽰することでベネフィットが得られる等の表⽰を⾏うことで提⽰を促す
バッジ情報保持箇所

保持している情報

提⽰先システムからの利⽤⽅法

Moodle

当該のMoodle上で発⾏されたバッジと発⾏先ユーザの⼀覧

当該のMoodleのAPIを利⽤して発⾏済みバッジの情報を定期的に取得するゲートウェイゲートウェイでVerifiable Credentialに変換されたバッジと発⾏先ユー
ザの⼀覧

ゲートウェイ上で発⾏履歴を管理し、提⽰先システムへAPI等で提供する

WalletWallet利⽤ユーザがVerifiable Credentialに変換したバッジの⼀覧

提⽰を促し、利⽤者⾃⾝で選択させる• ユーザのプライバシ等を考慮すると提⽰先システムへ利⽤者がアクセスした際に当該バッジを保有している場合は提⽰をするように促すことで利⽤者の意思を尊重することが望ましいと考えられる（以下、操作イメージ）サービス
ID

XXのバッジを持っていますか︖

パスワード持っています

ログイン

スキップ

認証基盤でバッジ情報の読み取りまでを実装、サービスへは検証済み属性として提供することで汎⽤的に展開することも可能

バッジ読み込みサービス追加の権限が割当られました© ITOCHU Techno-Solutions Corporation16

総括
仕様書記載の以下に関する技術的要素の検討を実施した。
• Moodleから発⾏されたオープンバッジをウォレットに登録するための実装⽅法• ゲートウェイからAPIを利⽤しMoodleへアクセス、ユーザ⾃⾝により発⾏済みバッジを取得し、Verifiable CredentialとしてWalletへ保管、提⽰先システムへユーザの意思により提⽰していく⽅
法の実装を⾏った• ウォレット内にあるデジタルクレデンシャルを選択して提⽰するための実装• 提⽰先システムへ提⽰するバッジを選択することが可能な実装を⾏った• ユーザから提⽰されたデジタルクレデンシャルを活⽤するための実装⽅法• SAMLのクレデンシャルプロバイダとしての実装を⾏い、既存のSAML IdP/SPと連携することでクレデンシャルを属性として提供することの検討を⾏った
OpenBadge v3/VC2.0に向けた課題も明らかとなった。
• マルチリンガルの表現• Endorsementの表現• 階層化されたクレデンシャルの表現© ITOCHU Techno-Solutions Corporation

17

今 回作成 した G a teway と Wa l l etのソ ースコード
NII様のレポジトリでMITライセンスで公開されています。
• Gateway• https://github.com/RCOSDP/credentialwallet_gateway• Wallet• https://github.com/RCOSDP/credentialwallet_wallet© ITOCHU Techno-Solutions Corporation18