🌅
DID Resolver (uport) をCloudRunでホスティングする
DIDのresolverで有名な Universal Resolver がありますが、 Markusさん が実験的(Experimental)な位置づけで提供してくれているサービスであり、Decentlizedの思想からも本番稼働でUniversal Resolverを信頼するな(Don't rely on the public instance)と注意書きが書かれています。
ここ数日、DID関連の調査をしていてこのResolverで504に遭遇することがよくあり、可用性の高いResolverが欲しいなと思っていたのと、本番運用時は自前でResolverをホスティングする必要があると思っていたので、本記事では、 did:web
と Ethereum関連(did:ethr
等)のresolveができるuport-did-driverをCloudRunで動かしてみました。
Docker Imageが公開されているので、以下のDockerfile 1行 書いただけです。
FROM uport/uni-resolver-driver-did-uport
CloudRunデプロイコマンド
gcloud run deploy uport-did-resolver \
--source . \
--allow-unauthenticated \
--ingress all \
--region asia-northeast1 \
--max-instances 2 \
--min-instances 0 \
--cpu 1 \
--memory 512Mi \
--port 8081
ソースコード:
利用例
こんな感じで利用できます。
デプロイしたCloudRunのURLにvitalik氏のEthreumアドレスをresolveする例
※ 既にこちらの環境は消しています。
$ curl -s https://uport-did-resolver-cxv3zh25mq-an.a.run.app/1.0/identifiers/did:ethr:0xd8da6bf26964af9d7eed9e03e53415d37aa96045 | jq
{
"didDocumentMetadata": {},
"didResolutionMetadata": {
"contentType": "application/did+ld+json"
},
"didDocument": {
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/secp256k1recovery-2020/v2"
],
"id": "did:ethr:0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"verificationMethod": [
{
"id": "did:ethr:0xd8da6bf26964af9d7eed9e03e53415d37aa96045#controller",
"type": "EcdsaSecp256k1RecoveryMethod2020",
"controller": "did:ethr:0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"blockchainAccountId": "eip155:1:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}
],
"authentication": [
"did:ethr:0xd8da6bf26964af9d7eed9e03e53415d37aa96045#controller"
],
"assertionMethod": [
"did:ethr:0xd8da6bf26964af9d7eed9e03e53415d37aa96045#controller"
]
}
}
CORS許可パターン
CORSを許可したパターンも必要になったので、既存レポジトリをフォークして以下のように
ソースを変更をして動作を確認しました。
参考:
Discussion