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年9月26日土曜日

Microsoft IgniteでのDID/VC関連トピックス

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

先週のオンライン開催されたMicrosoft IgniteではAzure Active Directoryを始めとするアイデンティティ関連のトピックスや新機能発表が色々とありました。

個人的に気になったのは、

  • Identity ProtectionがAzure AD B2Cにもきた
  • 条件付きアクセスがGraph API経由で触れる様になった
  • ヘッダ認証が使える様になった
  • VC関係の近況と退役軍人向けの教育プログラムへの適用事例
の4点です。

1点目は先日Blogにも書いた通り、今後のB2C向けサービスの幅が非常に広がる話ですし、2点目はリスクイベントを拾ってTeamsなど外部サービスに連携させるデモなどもあり運用面で非常に有用だと思いました。また3点目は以前Ping Access連携で実現していたことがMS純正でできる様になる、というところでレガシーアプリケーションへの適用の面では非常に有用だと思います。

そして、最後が本日のメインであるDID/VC関係の近況です。
* DID : Decentralized Identifier
* VC : Verifiable Credentials

こちらも以前ブログに書きましたが、その後ブラッシュアップされてきているもです。
※この辺のキーワード(含む自己主権型アイデンティティ/SSI)の使い方は間違って使われているケースが散見される(Decentralized Identityとか)たり、=ブロックチェーンみたいな誤解もあるみたいなのでどこかでちゃんとまとめないとな、、、と。この辺りのスライドを書いてから、自分の理解も進んだのと標準化の方向性も進捗してるのでどこかでUpdateします。。。

話がそれましたが、早速Igniteでのトピックスを追いかけてみましょう。

VC関係の話が取り上げられたのはキーノートを含む以下の4つのセッションです。

全体を簡単に要約すると、
  • VCを使うとVerifier(学校とか企業とか)が各種証明(学歴、職歴など)を簡単・確実に検証できるよ
  • VerifierがSubject(個人)の情報を一生懸命集める事によるプライバシー上の懸念もなくなるよ
  • すでに米国の退役軍人向けの教育プログラム(MILGears)で実証実験が走ってるよ
  • 今はプライベートプレビューだけど、もうすぐみんな使える様になるぞ!
  • VCをLinkedInのプロファイルに追加できるなるぞ!
みたいな話でした。

ざっくりみていきましょう。

まずはSatyaのキーノートです。後半54分あたりからDecentralized Identity Systemの話が出てきます。

私たちはオープンな分散型アイデンティティシステムを作り上げようとしています。そしてそれは、どんな中央集権的なオーソリティやテック企業からも独立しています。すでに退役軍人向けの教育プログラムでパイロットをしています。


彼らは自身の検証済みの記録をスマートフォン上のWalletに保管することができ、大学や企業に直接提示することができます。大学はそれ(VC)を数秒で検証することができ、センシティブなデータを保管する必要はありません。また退役軍人たちは、VCをLinkedInのプロファイルに追加することができ、新たな職業を得る機会に役立つでしょう。


次はVasuのキーノートです。途中16分すぎから出てくるIrinaのパートでIdentityの話があり、17分過ぎから分散型アイデンティティの話です。

オンライン化に伴いデジタル信頼やプライバシーはとっても重要なものになっています。しかし現在私たちはアイデンティティをデジタルに検証する仕組みを持っておらず、またデジタル・プライバシーは私たちのコントロール外となっています。私たちがパーソナルデータをオンラインで共有する際、企業・組織は記載されている目的外には利用せず、許可なく共有することはないことを約束し、それらのパーソナルデータが盗まれない様に、誤用されない様に保護する努力をします。マイクロソフトはすべての人々が自身のアイデンティティをコントロールできる様にする必要があると考えています。アイデンティティはどんな組織やテック企業からも独立しているべきなのです。これが私たちが分散型アイデンティティ分野に投資する理由であり、すべての人が自身のデジタルアイデンティティを所有し、誰が何の目的でいつアクセスできるか決定できるべきだと考えています。
年齢、学歴、職歴、クレジットスコア、生体情報は利用者自身のコントロール配下におかれ、政府や大学や企業の様なサードパーティはそれらの情報を検証できる様になります。それらすべてのクレデンシャルはデジタル・カードの様な形でMicrosoft Authenticatorの様なデジタル・ウォレットに保存されます。



私たちはVerifiable CredentialsとDecentralized Identifiersに関するオープンな標準に基づく自己主権型アイデンティティのヴィジョンを現実のものとするため、Decentralized Identity Foundationと共に活動しています。

私たちはこの分散型アイデンティティのシステムを多くの顧客と共にパイロットしており、MILGearsの教育プログラムもその一つです。 


ここでMilGearの人のインタビュー動画が流れた後、VasuがIrinaに今のステータスと今後どうなるの?って聞いてくれます(Good Job!)。「We're currently in private preview, but soon anyone will be able to try it.」素晴らしい!


次はおなじみJoyです。19分くらいから分散型アイデンティティ関係の話が始まります。


我々が物理的な世界で行ってきたパスポートや学位やその他証明書のやりとりをデジタル化するにはどうすれば良いのでしょうか?私たちはデジタルにそれらのクレデンシャルを検証するメカニズムが必要です。しかし今日私たちが持っているシステムはデータ漏洩や誤用で溢れています。私たちは分散型アイデンティティシステムとVerifiable Credentialsが解決策になると信じています。コミュニティの努力とオープンな標準をベースに構成され、既存のアイデンティティシステムと簡単に接続することが可能です。それはオープンな標準技術を用いており、マイクロソフトを含むどんな組織も支配することはできません。そして、それはすでに現実のものとなっているのです。


ここでやはりMILGearsの事例の話。どこにVerifiable Credentialsを提示したのか確認することができます。


退役後、大学や企業に就職する際に、軍がIssuerとなってそれまでの学歴や経歴を証明する、という形態の様ですね。

退役後、高等教育や企業への就職する際、大学や企業は学歴や軍でのトレーニング履歴にアクセスする方法がありませんでした。そのため、彼らは証明書などのドキュメントを収集し確認する長いプロセスを必要としていました。そして、多くの場合、それらのプロセスは紙をベースとしており、数ヶ月を要することもありました。

このプロセスをデジタル化することにより、彼らの待ち時間を減らすだけでなく、自身のデータに関するコントロールを行うことができる様になりました。大学がデータを収集し、保管し、保護する必要がなくなったのです。


ここでMILGearsのデモです。ここでMILGearsが保持している記録をVerifiable Credentialsとして発行します。

QRコードが表示されるのでMicrosoft Authenticatorで読み込むとカードの形でVerifiable CredentialsがAuthenticator上に追加されます。

次は大学にVerifiable Credentialsを提示します。こちらもQRコードを読み込むとVerifiable Credentialsが提示され、検証済みのデータとして大学側へ連携されます。


デモに続いてテクニカルな話をMelanieさんから。必要なのはAzure Active Directoryサブスクリプション(正確にはPremium P1以上)とKeyVaultだけ(こちらも正確にはStorageは必要)。やるべきことはたった3つ。KeyVaultでキーペアの作成をする、Rulesファイルを作る、Displayファイルを作る、とってもシンプルでしょ、的なデモです。
こちら、Rulesファイルですね。まぁ、確かに簡単な構造のjsonです。

こちらはDisplayファイル。こちらも非常にシンプルなjsonファイル。Authenticatorに表示されるカードのロゴとか色を決める感じですね。


というところでJoyのキーノートは終了です。

最後はMicrosoft Mechanicsですが、こちらも結局Joyががっつり話をします。
中身的には、W3Cの標準をちゃんとみてるよ、という話とこれまであったMILGearsの事例、KeyVault、RulesとDisplayなど実装にかかる話のおさらい的な感じのセッションです。

MILGearsの事例をベースにIssuer=MILGears/Subject(Holder)=退役軍人/Verifier=大学など、と関係性を解説してくれています。わかりやすい。

ブロックチェーンとの関係も最後に少しだけ触れられます。基本的にDID Documentと公開鍵の置き場所として使ってるだけです。



全体的にまだ詳しいところは触れられない感じでしたが、こうして動いている姿を見ることができると非常に面白いですね。MILGearsのケースも非常に面白いと思います。退役軍人っていうともっと年寄りでそのまま隠居する?ってイメージでしたが結構若い間に退役して、その後大学に行ったり企業に就職したりするケースもあり、その場合に身元保証を軍がやる、というのは日本にいるとあまりイメージが湧きにくいとは思いますが、話を聞いてみると納得、という非常に良いユースケースだと思います。

DID/VCはとても面白いテクノロジだとは思いますし、可能性も感じますが、別にDID/VCじゃなくても良いじゃん、というケースばかりなので今後DID/VCならではのユースケースがもっと研究されると良いな、というのが全体的な感想でした。




2020年9月2日水曜日

Azure Identity Protection for B2CがPublic Preview

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

ずっと出ると言われていて待っていたAzure Identity Protection(リスク判定と条件付きアクセス)のAzure AD B2C対応版がようやくPublic Previewになりました。

公式Blogでのアナウンス

 Azure Active Directory External Identities goes premium with advanced security for B2C

 https://techcommunity.microsoft.com/t5/azure-active-directory-identity/azure-active-directory-external-identities-goes-premium-with/ba-p/1604572


ポイントをまとめるとこんな感じです。

  • Identity Protection
    • 基本は普通のAzure AD版のIdentity Protectionのサブセット
    • 以下の制限あり
      • B2Cテナントでのセキュリティ・センターは使えない
      • ROPCフローでは使えない
      • ローカルアカウントでしか使えない
  • 条件付きアクセス
    • 基本は普通のAzure AD版の条件付きアクセスのサブセット
    • 以下の制限あり
      • デバイス状態をベースとして条件判定は使えない(設定はできちゃいますが)
  • ビルトインのユーザ・フローでもカスタム・ポリシーでも使える
  • ライセンス
    • Premium P2 Tierが必要


一番気になるP2ライセンスの価格表ですが、月間アクティブユーザー課金で通常の利用料+1.8円程度かかるみたいですね。(契約形態などにも依存するはずなので正確にはちゃんと調べてくださいね)

https://azure.microsoft.com/en-us/pricing/details/active-directory/external-identities/


徐々に全テナントにロールアウトされるみたいですが、私のテナントではすでに使えているのでFirst Lookをとりあえず。


何はともあれPricing TierをPremium P2へ。


ビルトインフローは面倒なのでカスタム・ポリシーで。

基本的な考え方としては、①リスク評価をして、②結果によっては多要素認証などによりユーザに対応をさせて、③結果OKであればリスクを緩和する、というプロセスでUserJourneyを汲みます。

全部は紹介しませんが、とりあえずこんな感じですね。

ConditionalAccessProtocolProviderを使ったTechnicalProfileを作ってOperationTypeでリスク評価なのか緩和なのかを切り替える、という感じです。


リスク評価の結果のアクションをどうするか、については通常の条件付きアクセスと同じように設定します。

とりあえず評価だけですが、ポリシーを実行するとカスタム属性に評価結果が出てきます。


ざっとですが、こんな感じです。

サードパーティのソリューションとの連携のエコシステムもできつつある中、純正機能もどんどんリリースされるので、全体として成長していくようにキャッチアップを続けていかないといけませんね。