2021年1月16日土曜日

MATTRの分散型IDプラットフォームを触ってみる - その 1

こんにちは、富士榮です。

ここ数年、uPort〜Microsoft VC as a Serviceなど分散型ID(DIDs/VCs*)に絡んでいるわけですが、一昨年秋のIIWに参加したときにPoCの話を聞いたMATTRのプラットフォームがかなりいい感じに進化していたので触ってみました。

* DIDs: Decentralized Identifiers

* VCs: Verifiable Credentials


MATTRについて

会社自体についてはそこまで詳しく知りませんが、ニュージーランドの会社です。

この辺りこの辺りでは有名ですね。

現在、MATTRが提供しているのはプラットフォームと関連する開発ツール群のようです。

プロダクトページより)


MATTR Platformについて

プラットフォームはコア機能として、

  • DID
  • Messaging
  • Verifiable Credentials
  • Verifiable Presentations
に関する生成、取得、削除、検証に関する機能群を提供しています。

また、拡張機能として、
  • OIDC Bridge
  • White Label Mobile Wallet & SDKs(提供予定)
が、ロックイン回避のために以下の機能もあらかじめ提供しているようです。
  • 複数のDID Methodのサポート
  • Secure Storageのサポート
  • プラガブルなKey Managementのサポート
IIWではOIDC Bridgeの部分のデモを見せてもらいました。
当時、私はuPortとAzure AD B2CとLibJeIDを組み合わせて免許証をトラストアンカーにしたuPort Credentialを発行、B2BのWebサイトでの身元確認を行う、というようなデモを作ったりしていました。懐かしい。


開発ツールについて

プラットフォーム以外にも開発者向けに以下の機能が提供されています。
  • MATTR Mobile Wallet App
  • Sample Applications
  • MATTR Command Line Interface(提供予定)


今回、プラットフォームのコア部分に関するSandbox環境を払い出してもらったので少し触ってみます。

では、早速レビューを。

トライアル申し込みをする

まずは環境をもらうところからですが、先程のプロダクトページの一番下にSandbox環境のトライアル申し込みがあるので申し込んでみました。

しばらくするとメールとSlackへの招待がくるので、Slackで担当の方と会話をすることになります。基本的にはKeybase上でトライアルテナントの情報とかシークレットなどを渡すからまずはKeybaseのアカウントを教えるように言われるのでアカウント名を伝えます。
(Keybaseのアカウントを作るところから始めました)

アカウントを伝えると今度はKeybaseのチャットで担当の人から以下の情報をもらえます。
  • tenantSubdomain: xxxx.sandbox.platform.mattr.global
  • tenantId: xxx-xxx-xxx
  • url: https://mattr-prod.au.auth0.com/oauth/token(Auth0使ってるんですね)
  • audience: https://platform.mattr.global
  • client_id: xxxxxxxxxxx
  • client_secret: xxxxxxxxxxx

プラットフォームの設定を行う

先にもらった情報があるとプラットフォームにアクセスできるようになります。(といってもAPIだけしか存在しないので、APIを叩きまくるんですが)

詳細は
に手順がのっているのでこちらをみながら進めます。

API Auth Tokenを取得する

要するに、先程Keybaseで伝えられたclient_idやclient_secretはAuth0のプラットフォームでaccess_token(MATTRプラットフォームのAPI Auth Token)を取得するためのものだったわけです。
普通にclient_credentialsでaccess_tokenを取得します。

curl --request POST \
  --url https://mattr-prod.au.auth0.com/oauth/token \
  --header 'Content-Type: application/json' \
  --data '{"client_id": "xxxxxxxxxx",
           "client_secret": "xxxxxxxxxx",
           "audience": "https://platform.mattr.global",
           "grant_type": "client_credentials"
          }’

DIDを生成する

まずはDIDを生成してます。
methodとしてはkey、web、sovの3種類をサポートしているようです。
didのエンドポイントにAPI Auth Tokenをつけて生成リクエストをPOSTするだけなので非常にシンプルです。
curl --request POST \
  --url https://tenant.platform.mattr.global/v1/dids \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer REPLACE_ACCESS_TOKEN' \
  --data '{   "method":"key",
              "options": {
                  "keyType":"ed25519"
              }
          }'

うまくいくとDID Documentが返ってきます。
MATTRのResolver APIもありますが、Universal Resolverでもちゃんと解決できるようになります。

Issuerに関する情報を確認する

DIDを発行することでIssuerのDID構成情報を確認することができるようになります。DIFのWell Known DID Configurationのスペックに対応しているようです。

curl --request GET \
  --url https://tenant.platform.mattr.global/.well-known/did-configuration \
  --header 'Accept: application/json'

結果、IssuerのDID構成情報が確認できます。

VCを発行する

こちらもAPIが用意されていますので、IssuerのDID、SubjectのDID、VCに含めるClaimなどを決めてPOSTしてあげるだけです。
curl --request POST \
  --url https://tenant.platform.mattr.global/v1/credentials \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer REPLACE_ACCESS_TOKEN' \
  --data '{"@context":["https://www.w3.org/2018/credentials/examples/v1" , "https://www.w3.org/2018/credentials/v1"],
           "subjectId":"did:key:z6MkjBWPPa1njEKygyr3LR3pRKkqv714vyTkfnUdP6ToFSH5",
           "type":["AlumniCredential"],
           "claims":{"givenName":"Jamie",
                     "familyName":"Doe",
                     "alumniOf":"Example University"},
           "issuer":{"id":"did:key:z6Mkg7FkYxUpSKBEUJMeG91A9vz66GfWxB4m9Lq81AMZ7wNT",
                     "name":"Example University"},
           "persist":true,
           "revocable":true
          }'

ありがちな卒業生である証明を発行するサンプルですね。

発行したVCは同じAPIのエンドポイントにGETしてあげると一覧表示されます。

とりあえず最低限必要な機能はちゃんと動いていますし、他にもVCのRevokeなど管理系のAPIも充実している感じです。

Walletアプリも使えるようにしてもらったので、次回はOIDC Bridgeと合わせてWalletへのVP/VC発行とOIDC-DID Authのゲートウェイでのログインなどチュートリアルにそって試してみようかと思います。

0 件のコメント: