ラベル ION の投稿を表示しています。 すべての投稿を表示
ラベル ION の投稿を表示しています。 すべての投稿を表示

2020年10月28日水曜日

Universal ResolverでIONのDIDを解決可能に

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


永らくMicrosoftの提供するION(アイオン)のDID Method、did:ionはUniversal Resolverでは解決できず、Microsoftが提供するリゾルバ(discover.did.microsoft.com)を使うしかありませんでした。

参考)DIDリゾルバあれこれ


今回、Universal ResolverのレポジトリにIONサポートのコードがマージされたことで、did:ionの解決ができるようになりました。

https://github.com/decentralized-identity/universal-resolver/pull/154


早速、レポジトリをcloneして試してみましょう。

手順はREADME.mdにある通り、

git clone https://github.com/decentralized-identity/universal-resolver
cd universal-resolver/
docker-compose -f docker-compose.yml pull
docker-compose -f docker-compose.yml up

とするだけです。

面倒ならhttps://dev.uniresolver.io/を使うのも良いと思います。


ローカルにデプロイしたUniversal ResolverとMicrosoftがホストしているリゾルバ、dev.uniresolver.ioそれぞれでテスト用のdidを解決してみました。

■ローカル

http://localhost:8080/1.0/identifiers/did:ion:xxxxxxxxxxxxxxxx


■Microsoftのリゾルバ

https://beta.discover.did.microsoft.com/1.0/identifiers/did:ion:xxxxxxxxxxx

■dev.uniresolver.io



まぁ、当たり前に解決できます。


ただ、MicrosoftのVerifiable Credentialsサービス経由で発行したdidは今のところローカルにデプロイしたdid driverでは何故か解決できませんでした。Microsoftのdiscoverサービスやuniresolver.ioだと解決できるので、まだコードに差分があるのかもしれません。


引き続き要ウォッチです。



2020年7月23日木曜日

[DID]リゾルバあれこれ

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

完全に個人メモです。

ご存知の通りDID(Decentralized Identifier)の構造は
did:{method}:{method specific identifier}
となっています。

例えば、イーサリアムだったら
did:ethr:0xE6Fe788d8ca214A080b0f6aC7F48480b2AEfa9a6
という感じです。

現状Blockchainの系がバラバラと乱立している状態なので、系の間でユニバーサルに一意に識別できる仕組みがないとDIDがIdentifier(識別子)としての役割を果たせないことはわかるんですが、そもそも論としてメソッド名が識別子の中に入っているって言うのもなぁ、と個人的には思いますが他にいいアイデアが出せるわけではないので自粛しておきます。

話はそれましたがDIDが上記の様な形式になっている以上、系を跨いで識別子(DID)および関連する情報(DID Metadata)を解決する仕組みがないと、DIDを使ったアイデンティティ管理システムが成立しません。ということで今日の本題の「リゾルバ」が必要になるわけで、実質標準になっているのがMarcusがやっている「Universal Resolver」である、というわけです。

元々DID関係はW3CのWeb Payment WG、Verifiable Credentials TF、OASISのXDI TC Registry WGが別々にやっていて、2015年〜2016年あたりでDPKIとかのドラフトとして出てきた中でレゾルバの必要性に注目してUniversal Resolverを作った、みたいな話を2018年のEuropean Identity and Cloud ConferenceでMarkusから聞いたとき、リソルバ自身の信頼性ってどうやって担保するの??みたいな話を聞いた覚えがあります。その時にMarkusはリゾルバ自体はOSSだからプライベート実装しても良いし、アプリに組み込んでも良いよ、みたいな話をしていました。

そんな中でMarkusがサンプル実装として公開したのが先の https://uniresolver.io/ で、他にもベンダが実装してきている例としてMicrosoftが自前のDID Projectで実装したのが、 https://beta.discover.did.microsoft.com/ だったりする、ということなんですね。

と言うことで、それぞれどんな感じなのかみてみようと思います。

登録されているDID method

そもそも現在どんなDID methodが存在しているのか、という話になるのですが、DID methodはW3Cのコミュニティグループで「ゆるく」管理?されています。

https://w3c-ccg.github.io/did-method-registry/

今日(2020/07/23)の段階で59個も登録されてるんですね。残念ながらuPortはdeprecatedになってます(単にethrに引っ越しただけですが)。

Universal Resolverの状況

Universal ResolverではメソッドをサポートするためにDriverという単位でプラグインを追加していく形になります。

githubのレポジトリを見るとDriverの開発の方法や現在開発されているDriverの一覧を確認することが出来ます。

https://github.com/decentralized-identity/universal-resolver/

同じく今日時点で28種類ある様です。

使い方としては非常にシンプルでUniversal Resolverをデプロイし、エンドポイントに対して
curl -X GET http://localhost:8080/1.0/identifiers/did:sov:WRfXPg8dantKVubE3HX8pw
という感じでGETしてあげればDID metadataが返ってくるという仕掛けです。

これをWebで簡単に触れる様にしたのが先に書いた

https://uniresolver.io/

ってことです。


Microsoftの実装は?

前回のポストでも紹介しましたがMicrosoftもDIDの世界に突き進んでいるわけですが、当然マネージドなリゾルバを提供しています。
公開されているサンプルソースを掘っていくと、

https://beta.discover.did.microsoft.com/

というURLが出てきます。

ご存知の通りMicrosoftのDID/IONのメソッドは ion で、現在Universal Resolverではサポートされていません。ionメソッドのDIDをUniversal Resolverで解決しようとしてもNFです。



と言うことでMicrosoftのDIDを解決するには上記のリゾルバを使うしかなさそうです。

使い方としては、Universal Resolverと同じで


curl -X GET https://beta.discover.did.microsoft.com/1.0/identifiers/did:ion:EiBo3GQwMgF...
と言う感じです。

DID metadataの視認性を上げるためにFirefoxで開いてみます。


ふとした疑問として、どこまでMicrosoftのリゾルバは他のメソッドをサポートしているんだろう?と思って実験してみました。サンプルとして使ったDIDはUniversal Resolverのレポジトリにあるテスト用のものを使いました。

以下が結果です。
method support
sov OK
btctr OK
v1:test OK
key OK
ipid NG? Universal ResolverでもTimeoutするのでipid側の不具合かも
web NG? サンプルになっているのがdid:web:uport.meなのでDIDの問題かと
ethr NG. Timeout
nacl OK
jolo NG. Timeout
stack OK
erc725 NG? Universal ResolverでもExceptionが出るのでドライバの問題っぽい
hcr OK
neoid NG? Universal ResolverでもExceptionが出るのでドライバの問題っぽい
elem NG
github NG
ccp OK
work OK
ont OK
kilt OK
evan OK
echo OK
factom OK
dock OK
abt OK
trustbloc NG
sirius NG? Universal ResolverでもExceptionが出るのでドライバの問題っぽい
mpg NG? Universal ResolverでもExceptionが出るのでドライバの問題っぽい
trust NG? Universal ResolverでもExceptionが出るのでドライバの問題っぽい
io NG? Universal ResolverでもExceptionが出るのでドライバの問題っぽい



ということで完全に自分メモでした。