Microsoft Entra Verified ID とは何なのか

この投稿は [Microsoft Security Advent Calender 2023](https://qiita.com/advent-calendar/2023/microsoft-security) に参加しています。

<font color="Red">この投稿に登場する企業名や個人名はすべて私が考えた架空のものです</font>

先月、シアトルで開催されたマイクロソフトのイベント Ignite 2023 では [数えきれないほどの新機能がアナウンス](https://news.microsoft.com/ignite-2023-book-of-news/ja/) されました。しかし残念なことに私がひそかに愛する Microsoft Entra Verified ID に関しては特に新しい発表はありませんでした。個人的に「このコは絶対に来る！」と思っているので寂しい限りです。

とはいえ、そこはさすがの Entra チーム。さりげなくデモンストレーションに組み込んでいますので、是非以下の動画をご覧ください。8分あたりからデモが始まります。英語も明瞭でとても聞きやすいのでお勧めです。

https://www.youtube.com/watch?v=odq6RWTnKTk

この投稿では、上記の動画でデモされた内容を解説しながらおさらいしていきたいと思います。

## Verified ID（検証済み ID）とは

はず初めに Verified ID とは何なのか軽く説明しておきます。日本語では「検証済みID」と表現します。そうなんです。「既に検証された信頼できるID」を提供したり受け取ったりする機能が、Microsoft Entra Verified ID です。

例えば以下のようなシチュエーションを想像してみてください。

あなたは学生で、就職活動のためにリクルート社にエントリーしたいと考えています。おそらくリクルート社からは在学証明の提出が求められるのではないかと思います（ぶっちゃけ、世代じゃないのでよく知りません）。あなたは大学に在学証明書の発行を依頼し、発行された証明書をリクルート社に送付し、リクルート社はそれをチェックして、やっとあなたのアカウントが作成されます。またはこのやり取りは、あなたと就職したい企業の間で行われるのかもしれません。そうなるとエントリーシートを送付する企業が増えるので余計に面倒になります。

そこで、大学から「あなたが在学していることを証明する」デジタルバッジを発行してもらいます。あなたのユーザー ID は大学の認証基盤に登録されているわけですから、正しくログインさえできれば在学バッジの発行に人手を介すことはありません。大学側も非常に楽です。発行されたバッジはスマフォに格納され、リクルート社にエントリーする際に携帯電話からデジタルバッジを提示します。これでエントリー完了です。

同様に、卒業証明や単位取得証明なんかにも応用可能ですし、企業の在籍証明なんかにも使えますね。

特定の信頼できる機関によって検証された ID を使って本人確認を行うので、「検証済みID」と呼ばれています。

もっとクリティカルな状況を考えてみます。

あなたは「みずほ銀行」にアカウントを持っています。さらに「足利銀行」にもアカウントを作成したいと考えています。世の中はすっかりデジタル社会ですから、スマフォなんかを使ってオンラインで口座開設をリクエストすることが認められていますが（eKYC）、これには犯収法に定められた本人確認要件を満たす運用が求められます。このあたりについて詳しくはググっていただければよいのですが、その中に「ト方式」と呼ばれるものがあります。

> [平成30年改正犯罪収益移転防止法施行規則（平成30年11月30日公布）に関する資料](https://www.npa.go.jp/sosikihanzai/jafic/hourei/data/kaiseishiryo20181130.pdf)

これは、例えば既に「みずほ銀行に口座があることをみずほ銀行に証明」してもらい、これを足利銀行にオンラインで送付して口座開設を行うという方式です。既に KYC 済のみずほ銀行から「この顧客の KYC は済んでいて信頼できるよ」とお墨付きをもらえるわけですから、足利銀行にとっては大きな手間をかけずに KYC を完了できるというわけです。

他にも、NTTドコモと携帯電話の契約をする場合なんかも考えられます。これも同様の方式をとることで”信頼できる銀行”からの情報をもとに顧客と携帯電話契約を成立させることができます。NTTドコモも手間がかからなくてうれしいですし、もしかするとみずほ銀行はNTTドコモから手数料をもらえるかもしれません。

このように、金融機関の厳密な KYC 運用を、他事業者の本人確認に流用できる仕組みがト方式です。

このト方式に活用できる可能性（あくまでも現時点では”可能性”と書かせてください）があるのが、Verified ID です。

## 自己主権型 ID と 非中央集権型
ここで重要なポイントを1点。Verified ID を事業者に提示するかどうかは本人の意思のみによるということです。大学は Verified ID を本人に向けてのみ発行します。大学が本人の許可なく事業者に渡すことはできません。あくまでも自分自身が情報の管理者であり、他人にそれをコントロールする権限は無いのです。

このような性質を持った ID を「自己主権型 ID（Self Sovereign Identity）」呼びます。とはいえ、この例では大学や銀行といった中央集権的プロバイダーが介在しており、完全な自己主権型とは残念ながら言えません。本当に自己主権を得るのであれば、どの組織にも属さない独立したプラットフォームが必要になります。

そこで ID を保存するプラットフォームとして考えられるのが Blockchain です。Blockchain を ID の管理台帳として使用することで透明性を確保し、中央集権型のアイデンティティプロバイダーに頼ることなく管理することができます。このように非中央集権型のプラットフォームで管理される IDを、非中央集権型 ID（Decentralized ID, DID）と呼びます。

が、これがまた難しい。。。。だって、じゃ誰が ID の正確性や真正性を担保するの?という話に帰結するわけです。これについては話が長くなるので別の機会に。

## 動画でのデモの流れ

動画ではある企業（WOODGROVE 社）に入社する社員候補のバックグラウンドチェックを例に、オンラインのみでこれを行うというシナリオを見せています。この流れを、デモの中では「オンボーディング」と呼んでいます。

デモで示されている通り、オンボーディングは大変な作業です。以下に示すように各ステップに結構な時間を要します（人事部の方には頭が下がる思いです）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/601690c2-c8c5-6d89-ef63-07adbcdd981e.png)

では手順を見ていきましょう。

### 1\. オンボード先の企業からの案内メール

デモでは、これからオンボードする企業 WOODGROVE から以下のような案内メールを受け取っています。この中に、オンボードの手順がかかれているので、ユーザーはこの手順に従ってオンボードを進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/e9f28f86-6a1f-3151-91b4-ff5745c9da33.png)

### 2\. Microsoft Authenticator をスマフォにインストールする

最初の手順は、みなさんが普段、多要素認証で使用している Microsoft Authenticator のインストールです。Microsoft Authenticator が、このオンボーディングプロセスの中で中心的な役割を果たします。このアプリは App Store や Google Playから無料でダウンロードしてインストールできます。Ignite 2023 イベントでは、Passkey のサポートについて発表があったので、小躍りして喜んだ方も多いはずです（2023年12月2日時点ではプレビューです）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/e3131d3c-1d8a-54cf-62f4-63062afbabdf.png)

### 3\. LexisNexis で 身元確認と検証を行う

身元確認を行うために、WOODGROVE に何らかの書類を送付するといったことはしません。ここでは、個人の身元を企業に代わって検証する商用サービスを使用しています。それが LexisNexis 社です。

LexisNexis（レクシスネクシス）社は [Verified ID を発行するマイクロソフトのパートナー企業](https://learn.microsoft.com/ja-jp/entra/verified-id/partner-gallery) の１つです。これらのパートナーは本人確認とその証明の発行を行ってくれる”信頼できる”企業です。今回ユーザーは事前に自身の情報を LexisNexis に登録しておくことで、Verified ID の発行を依頼することができます。

当然ですが、これからオンボードする WOODGROVE 側も LexisNexis を”信頼できるパートナー”として認識している必要があります。そうしないと「どこの馬の骨が発行した Verified ID だ?」ってことになります。よって、WOODGROVE 側も Verified ID を受け入れられるように Entra Veridied ID をセットアップしておく必要があります。

この流れを示したのが以下の図です。
![image.png](https://learn.microsoft.com/ja-jp/entra/verified-id/media/verified-id-partner-au10tix/vc-solution-architecture-diagram.png)
- Trused VC Issures : LexisNexis. VC は Verified Credential の略。
- Entra Verified ID Service をホストしているのが WOODGROVE
- Alice(Subject) : これからオンボードしようとしているユーザーです。
- Relying Party: WOODGROVE社内のオンボーディングを自動処理するためのアプリ

> 参考 [Verified ID を構成し、LexisNexis を ID 検証パートナーとして構成する](https://learn.microsoft.com/ja-jp/entra/verified-id/howto-verifiable-credentials-partner-lexisnexis)

ユーザーは、はじめに LexisNexis のサービスにアクセスし、自分自身の情報を登録する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/f923bfa6-0ec6-8cb8-2ea6-450b3d4f119a.png)

その際、「セルフィー」と「政府発行の ID カード」の写真も”その場で撮って”アップロードします。事前に保存してある写真はアップロードできないようにアプリ側で制御しているはずです。この運用は日本でも行われている犯収法の「ホ方式」に似ていますが、日本の場合は券面だけでなく「IDカードの厚み」が分かる写真もアップロードさせています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/d59076e6-c140-3e16-bfc1-dec84895db68.png)

「Next」をクリックすると、これらの情報が検証されます。裏で何をしているかは明らかではありませんが、券面のチェック、写真と券面の写真の整合性、この人物のバックグラウンドチェック（ここは正直どうやっているかは不明ですが...なんらかのデータベースと連携しているのでは?と思われます）を行っているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/c993efb8-bbef-6554-a1bb-169c7011c330.png)

そして、少し待たされて検証が完了します。この間わずかに10秒程度です。本当の運用でここまで早いかどうかは分かりませんが、いずれにしても面倒なドキュメント送付等がないことはわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/3a4c860c-48e4-3422-9269-5782dd0d6a06.png)

さて、これで”信頼できる個人認証プラットフォーム”に自分自身の情報を登録することができました。ここまでで、WOODGROVE にはいかなる情報も渡していません。

### 4\. Verified ID を Microsofrt Authenticator に保存

LexisNexis に登録した情報は自分自身がコントロールできる必要があります。また、検証するために LexisNexis にログインして毎回問い合わせるなんてのは超面倒です。

そこで、Verified ID を、スマートフォンにインストールした Microsoft Authenticator に保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/66ea0fa8-88f6-cb3e-7c4f-111bb4fa16cb.png)
「Add credential」をクリックすると、発行された Verified ID がスマートフォンにダウンロードされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/4338859b-019e-f5fe-98ca-cf46033511d5.png)

保存が完了すると、以下のように Authenticator の「Verified IDs」のページに登録されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/69e5d386-5d39-99c5-75fd-3c352ddca094.png)

もし皆さんが Microsoft Authenticator を使用しているようであれば画面の右下に「検証済み ID」というボタンがあることが分かるはずです。日本語環境では以下のような感じです。これは私自身のAuthenticatorの画面です。複数機関から発行された複数の Verified ID が保存されていることがわかりますよね。
<img width=400 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/c2d6e072-01a4-b3b0-370d-a7c48fff8b2b.png">

デモの中では、このような Verified ID が保存された Authenticator のことを Wallet（財布）と呼んでいます。Microsoft Authenticator は、クレジットカードや会員カードが保管されている財布みたいなもので、必要に応じて店員に提示して身分を証明することができるわけです。

### 5\. WOODGROVE に Verified ID を提示する

いよいよ大詰めです。次は、LexisNexis から発行された Verified ID を WOODGROVE に提示してオンボード処理を進めてもらうよう依頼する必要があります。

まずは、WOODGROVE のサイトにアクセスして、基本的な個人情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/9b638fa3-a5a7-52ec-ec29-ecca8cdcc26c.png)

先に書いた通り、WOODGROVE 社は LexisNexis 社と契約しており、かつ Entra Verified ID を実装しています。そこで、ユーザーに対して LexisNexis 社から発行された Verified ID を提示するよう求めてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/351ca8d3-a27e-4970-1a6e-b10298cb74c0.png)

「Share My Credentials」をタップすると、既にユーザーが Wallet の中に保存済みの Verified ID が表示されるので、「Share」をタップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/c4d4d64e-0791-788e-38ad-b81b49c329a2.png)

これでオンボードの準備は完了しました。ユーザーは、Wallet（Microsoft Authenticator）に保存されている Verified ID を WOODGROVE に提示しただけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/a4bf5815-d246-5056-db08-7c2ecf7f163f.png)

### 6\. 社員としての Verified ID の発行

これでユーザーは新入社員として WOODGROVE 社に受け入れられました。実際の運用では、もう少し複雑な作業があるような気がしますが、ひとまず紙のやり取りや面倒なフォーム入力をすることなくここまでの処理が行えました。

さて次に、ユーザーは業務を行うために社内のリソースにアクセスする必要があります。もしかしたら会社に対して新しい PC を要求したり、（日本であれば）通勤交通費の申請なんかもする必要があるでしょう。

そのためには、何はなくとも「社員としてのユーザーID」が必要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/2dc5c468-af8a-3273-a842-ad527c285595.png)

LexisNexis から発行された Verified ID を担保として、WOODGROVE 用の社員 ID が発行されます。これも Verified ID です。この場合は「社員カード」のようなものだと考えてください。物理的なカードではなく、デジタルな社員カードです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/f52cbdc1-963f-cfd9-cb35-0cdee5855eb0.png)

これが、WOODGROVE 社から発行された Verified ID です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/4836c5ee-d67d-20a5-82d1-927316bb75e4.png)

WOODGROVE の Verified ID が追加され、Walletの中に、２つの Verified ID が存在することがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/d460b307-4448-3508-6ca7-87a824eb6dfd.png)

WOODGROVEの Verified ID をタップすると、以下のような情報が表示されます。既に Employee ID が割り当てられていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/b9650d2f-5df3-c784-2813-21713eca98f2.png)

### 7\. ユーザーID とワンタイムパスワードを発行する

無事に社員 ID（社員カード）が発行されました。ただし、実際に社内のリソースにアクセスするには、Windowsへのログインも必要ですし、メールサーバーへのログインも必要です。そのためには社員カードとは別に「ユーザーID」を発行してもらう必要があります。

そこで WOODGROVE 社は、オンボーディングのポータルに、ユーザーID を発行する仕組みを実装しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/e708cf4c-8b9c-39dd-5d72-f91e46e34a03.png)

もちろんこの場合も Verified ID を提示すれば自動的に発行されます。以下の画面では ユーザーID だけではなく、有効期限付きのワンタイムパスワードも記載されています。裏では、Entra ID のワンタイムパスワード機能が使われているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/362432f8-6c93-cab0-5e7b-5034840d43cc.png)

### 8\. 多要素認証をセットアップする
上の画面で、「Waiting for your account setup」をクリックすると、Microsoft Authenticator に誘導されます。

そして、先ほど発行されたユーザーIDとワンタイムパスワードを使用して Authenticator にユーザーIDを登録します。見慣れた画面ですね。多要素認証の設定をする際に必ず見る画面です。つまり、ユーザーは初期セットアップの段階で多要素認証のセットアップが強制されるということです。これはとても重要なことです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/8bc7e7f7-31d0-d02d-a315-a4a9af14e078.png)

おなじみの画面で「Work or Shool account」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/ab47e4ae-62b0-db41-0abf-6a214389f00d.png)

画面に表示されたQRコードをスキャンしてスマートフォンにユーザーIDを登録したことがある方も多いと思いますが、スマフォ上のQRコードを同じスマフォで読み取ることはできません。そこで、先ほど発行されたユーザーIDとワンタイムパスワードを使用してサインインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/41529dad-c9c9-0a00-c51b-353dbe3699c1.png)

ユーザーIDを入力し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/6486d51e-e1e2-65be-832c-1fcdbdbb7ec0.png)

ワンタイムパスワードを入力すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/adacd7d4-c36b-1157-01a8-7e49f349f44d.png)

Authenticator にユーザーIDが登録されます。Entra ID 側ではユーザーの既定の認証方法として「Notification（スマフォに通知して認証）」と「One-Time Password Codes（ワンタイムパスワード認証）」が設定されているのでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/49f23478-9a82-cd5b-4e39-d1c21ffa7b60.png)

以上でアカウントのセットアップは完了です。非常に簡単でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/a0e35241-68ca-2c24-0c8b-55e631ef0174.png)

これで、社内リソースにアクセスするための準備が整いました。すべてがスマートフォンだけの操作で完了しています。すばらしいです。

### 9\. PC をセットアップする

さて、実際に仕事をするとなるとさすがにスマフォだけではきついですよね。よって PC のセットアップを行う必要があります。
おそらく、この新入社員の自宅には、WOODGROVE から支給された、Autopilot によって初期化された PC が届いているのでしょう。箱から出してPC を起動し、「会社または学校のアカウントを使用する」を選択すると以下のような画面が表示されます。ここで、ユーザーID を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/d36aa414-a43b-d28d-a5b2-f0617d55d55a.png)

次にパスワードを入力する画面が表示されますが、既にワンタイムパスワードは使ってしまいました。そこで「Use an app insted」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/d2ef5917-7d41-1448-150a-6e27d9dedf97.png)

すると、認証コードが表示されると同時に、先ほどセットアップした Authenticator にプッシュ通知がやってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/a0791e8d-67b4-7e26-d3df-c888d51a8f5a.png)

おなじみの画面ですね。ここに上の画面に表示されたコードを入力して「YES」をタップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/95768053-26c6-b163-8768-67629dc2f98d.png)

これでデバイスは自動的に Entra ID にエンロールされ（おそらく Intune にも）、社内リソースにアクセスできるようになります。

セットアップの途中に Windows Hello for Business のセットアップ画面が表示されたら速やかに「顔」を登録し、顔認証でログインできるようにしましょう。これで「フィッシングに強い認証」が可能になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/3d143d73-7ea9-648a-33ed-e8638a100c2f.png)

### 10\. さいごに

いかがでしょうか? Verified ID ってちょっと面白そうだなと思っていただけたでしょうか？

もちろん、これらを実装するには多くの障壁があることは承知しています。1つの企業だけで実装してもあまり価値はありません。Verified ID 経済圏が必要です。こうした新しい技術が浸透するには長い年月を要すものです。それでもすこしでも興味を持っていただき、「ちょっと試してみようか」「グループ企業間だけでもやってみようか」と思ってもらえたら幸いです。

ちなみに、このデモの後には Youtube でも有名な John Savill がホワイトボードを使用して「Entra Identity Governance」を使用したアイデンティティのライフサイクルについて解説してくれていますので、そちらも楽しんでいただければさらに幸いです。

### 補足
Verified ID はマイクロソフト独自の技術ではありません。各種業界標準がベースとなっています。詳細は以下の記事を参照してみてください。
[Microsoft Entra 検証済み ID でサポートされている標準](https://learn.microsoft.com/ja-jp/azure/active-directory/verifiable-credentials/verifiable-credentials-standards)

また、Authlete 社 の Takahiko Kawasaki さんの以下の記事がとても参考になりますので、ご一読を強くお勧めします。
[Identity Assurance - eKYC 時代の OpenID Connect](https://qiita.com/TakahikoKawasaki/items/55b54d4b09826a9605e5)