Universal Resolver でCompliantになるMethod目指した
0. 背景
発端は自分が管理しているdid methodの did:content のResolverを作りMergeされたが
Universal Resolver でエラーが出てしまっていたので解決しようとした。
エラー内容 non-compliant
かつ missing
であることだけわかる。
1. Valid なDID Documentを目指す
そもそもDID Documentとして正しいSchemaなのかを確認する。
Universal Resolverには便利なLintのリンクがありDID Documentをチェックできる。早速チェックしてみる
did:content:3SqTXtoMpiPeNo5vEP2p7yNGQUeCGjqW1wnctv8yaCWXojD29GYcUEo
Verification Relationship is missing
と出ている。
verification relationship とはDID対象者と検証方法を紐つける方法についてあるメソッドであり
authentication
/ assertionMethod
などがある。
Note: Requiredには id
だけなのでいらないと思ったが、なにかの要素があるときはRequiredになるのだろうか、しっかり読んだほうが良い
authentication
/ assertionMethod
などを追加し、Lintに怒られなくなった。
2. しかし直らず。
そもそも、この内容はどこで決定されるだろうと想いRepositoryを捜索する。
するとネット上のJSONデータを元にポップアップを出していることがわかった。
....
"did:content": {
"status": "no response",
"identifiers": [
{
"did:content:3SqTXtoMpiPeNo5vEP2p7yNGQUeCGjqW1wnctv8yaCWXojD29GYcUEo": {
"error": "no response",
"duration": 62.026434094
}
}
]
このJSONの更新元をたどっていけばなんのValidationに違反しているのかがわかりそうと
思いRepositoryを捜索する。
更新はCIによる定期実行だった。
GitHub Actionsを見ると確かにエラーが出ている。
X> invalid SHACL validation response
processing Did: did:content:3SqTXtoMpiPeNo5vEP2p7yNGQUeCGjqW1wnctv8yaCWXojD29GYcUEo
Note:SHACL とはこれのこと?と思ったが違いそう。
3. did-status-generator を調べる。
とりあえずCIで使われている oydeu/did-status-generator:latest
を落として中に入りValidation部分を読んで見る。
(ソースコードはここにあった)
読んでみるとここへのアクセスでTimeoutにっている🤔
$ curl https://didlint.ownyourdata.eu/api/validate/did:content:3SqTXtoMpiPeNo5vEP2p7yNGQUeCGjqW1wnctv8yaCWXojD29GYcUEo
{"valid":false,"error":"time out"}
https://didlint.ownyourdata.eu/api/validate/
の実装の中に入り、
何がTimeoutなのか見てみると、dev.uniresolver.io/1.0/identifiers/
ぽい。
$ curl https://dev.uniresolver.io/1.0/identifiers/did:content:3SqTXtoMpiPeNo5vEP2p7yNGQUeCGjqW1wnctv8yaCWXojD29GYcUEo
<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>
確かに今日は https://dev.uniresolver.io/1.0/methods
も 504 Gateway Timeout
なので https://dev.uniresolver.io/
自体正しく動いていない
【暫定】 結論
4. dev.uniresolver.io/1.0/*
系APIが落ちているのでLintが通らず non-compliant
になっている。Web Front の方でValidationはPassedなので復活したらなおるかも。
Experimentalなので気長にまつ。
とはいえ、見様見真似な部分もあるDID DocumentなのでよりValidなものにしていかないといけない。
4. 動いた(ミス発覚)
動いたけど、contextで必要なものを削ぎ落としたてしまい、Error。
*このWarningに従うとエラーになるので、気にしないようにしよう。
Notes on JSON-LD Context:
'https://w3id.org/security/suites/secp256k1recovery-2020/v2' is not yet listed as Verification Method Type in the DID Specification Registries
5. Compliant!
6. Extends
コンテンツのIDをプラットフォームから独立して管理するためのDID-Methods did:content
を設計しています(道半ば)。
Discussion