こんにちは、富士榮です。
前回に引き続きMATTRの分散型IDプラットフォームを触ってみます。
前回はプラットフォーム自体のセットアップとIssuer DID、VC(Verifiable Credential)の設定までを行いましたので、今回はWalletに対して実際にVCを発行するところまでをやってみます。
MATTRの基本的な考え方としては、バックエンドのプラットフォーム自体は認証やユーザ管理の機能を持たず外部のIdentity Providerと連携したIssuerを通じてVCを発行する、という形となっています。
公式ドキュメントではAuth0と連携したIssuerを作成し、VCを発行する仕組みが紹介されていますので、まずはこれをやってみたいと思います。
やるべきことは以下の3つです。
- 外部OpenID Providerの構成
- 外部OpenID Providerと連携したIssuerの定義を作成
- 出来上がったIssuerでの発行リクエストをQRコードにしてWalletで読み取りVCを発行
外部OpenID Providerの構成
- アプリケーション(Client)を作成する
- ユーザに発行すべきcredentialの型と値を属性として持たせる
の2点だけです。
まずはアプリケーション登録ですが、通常のRegular Web Applicationとしてクライアント定義をしていきます。
MATTR側に設定するために必要なのはclient_idとclient_secretのみなのでアプリケーションを作成したこれらの値をメモしておきましょう。
ちなみにredirect_uriについてはMATTR側でIssuer定義を行うと生成されますのでここでは設定しなくてもOKです。
次にユーザに必要な属性を設定します。これもAuth0側の設定となりますが、該当のユーザを開き、user_metadataとして属性と値を設定します。サンプルに従いこんな感じに設定します。
{
"educationalCredentialAwarded": "Almuni 2020"
}
一旦はOpenID Provider側の設定はおしまいです。
Issuerの作成
- 前回のPOSTで生成したIssuer DID
- 先に取得したclient_id、client_secret、OPのurl(内部的に.well-knownを取得しにいくのでドメイン名の部分まで)
- 属性のマッピング
curl --request POST \
--url https://tenant.platform.mattr.global/oidc/v1/issuers \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer REPLACE_ACCESS_TOKEN' \
--data '{"credential": {
"issuerDid": "did:key:z6MkjBWPPa1njEKygyr3LR3pRKkqv714vyTkfnUdP6ToFSH5",
"name": "University Attendance Credential",
"context": [
"https://schema.org"
],
"type": [
"AlumniCredential"
]
},
"federatedProvider": {
"url": "https://example-university.au.auth0.com",
"scope": [
"openid",
"profile",
"email"
],
"clientId": "vJ0SCKchr4XjC0xHNE8DkH6Pmlg2lkCN",
"clientSecret": "QNwfa4Yi4Im9zy1u_15n7SzWKt-9G5cdH0r1bONRpUPfN-UIRaaXv_90z8V6-OjH"
},
"claimMappings": [
{
"jsonLdTerm": "alumniOf",
"oidcClaim": "alumni_of"
}
]
}'
WalletへVCを発行する
QRコードを読み取ると左端の画像のようにCredential Offerとして表示され、ProceedをタップするとAuth0のログオンが要求され、成功するとCredentialを受け取流ことができます。








