Microsoft Entra Verified IDを動かしてみる 第5回

~検証作業(本人確認3)とVCのこれから~

Microsoft

2026.01.29

     

本コラムも、ようやく最後のパートとなりました。前回はサンプルWebアプリ経由でVCを発行させてみました。今回は、写真情報をWebアプリにアップロードし、これを含めたVC発行と検証を行います。

VC資格情報に顔認証を含める

Microsoftサンプルアプリですが、実は顔認証データを含めることができます。顔認証を含めることで、本人証明の精度を圧倒的に向上させることができます。Entra Verified IDでは顔認証がサポートされており、これを有効化することで、機能を利用することができます。

Entra Verified ID資格情報の改修

まず、Entra Verified ID資格情報の改修を行います。[確認済みID]- [VerifiedCredentialExpert]-[プロパティ]から[表示の定義]および[ルールの定義]を以下のように書き換えます。

[表示の定義]

{
  "locale": "en-US",
  "card": {
    "backgroundColor": "#000000",
    "description": "Use your verified credential to prove to anyone that you know all about verifiable credentials.",
    "issuedBy": "Microsoft",
    "textColor": "#ffffff",
    "title": "Verified Credential Expert",
    "logo": {
      "description": "Verified Credential Expert Logo",
      "uri": "https://didcustomerplayground.z13.web.core.windows.net/VerifiedCredentialExpert_icon.png"
    }
  },
  "consent": {
    "instructions": "Sign in with your account to get your card.",
    "title": "Do you want to get your Verified Credential?"
  },
  "claims": [
    {
      "claim": "vc.credentialSubject.firstName",
      "label": "First name",
      "type": "String"
    },
    {
      "claim": "vc.credentialSubject.lastName",
      "label": "Last name",
      "type": "String"
    },
    {
      "claim": "vc.credentialSubject.photo",
      "label": "User picture",
      "type": "image/jpg;base64url"
    }
  ]
}
  

[ルールの定義]

{
  "attestations": {
    "idTokenHints": [
      {
        "mapping": [
          {
            "outputClaim": "firstName",
            "required": true,
            "inputClaim": "$.given_name",
            "indexed": false
          },
          {
            "outputClaim": "lastName",
            "required": true,
            "inputClaim": "$.family_name",
            "indexed": true
          },
          {
            "outputClaim": "photo",
            "required": false,
            "inputClaim": "photo",
            "indexed": false
          }
        ],
        "required": false
      }
    ]
  },
  "validityInterval": 2592000,
  "vc": {
    "type": [
      "VerifiedCredentialExpert"
    ]
  }
}
  

Microsoftサンプルアプリの改修

次に、サンプルアプリの改修を行います。Visual Studio Codeでローカル上の[ACTIVE-DIRECTORY-VERIFIABLE-CREDENTIALS-DOTNET]フォルダーを開き、[1-asp-net-core-api-idtokenhint]-[IssureController.cs]を開きます。IssureController.cs の以下項目を書き換えてセーブします。

private IssuanceRequest SetClaims( IssuanceRequest request ) {
	request.claims = new Dictionary();
	request.claims.Add( "given_name", "[名前]" );
	request.claims.Add( "family_name", "[苗字]" );

	string photoClaimName = "photo";
	// get photo claim from manifest
	if (GetCredentialManifest( out string manifest, out string error )) {
		JObject jsonManifest = JObject.Parse(manifest);
		foreach( var claim in jsonManifest["display"]["claims"] ) {
			string claimName = ((JProperty)claim).Name;                    
			if (jsonManifest["display"]["claims"][claimName]["type"].ToString() == "image/jpg;base64url" ) {
				photoClaimName = claimName.Replace( "vc.credentialSubject.", "");
			}
		}
	}
}
  

Entra Verified ID顔認証機能を有効化

最後に、Entra Verified IDの顔認証機能を有効化します。[確認済みID]-[概要]-[概要]-[アドオン]から[顔チェック]を有効化します。1トランザクション $0.25の追加費用が発生します。

この改修については、Combat impersonation using Face Check with Microsoft Entra Verified ID | Microsoft Entra Identity Platformに説明がありますので、参考になると思います。

VC資格情報の発行(顔認証含む)

改修が完了したら、Visual Studio Codeでデバッグ実行を行い、ngrokで公開を行うとアプリが表示されます。

[Take Selfie]を選択し、現れた二次元コードを「スマホのカメラで」読み込むことで、セルフィー写真をアップロードできます。

写真がアップロードされた状態で[Issue Credential]をクリックすると、再び二次元コードが現れます。Microsoft Authenticatorで読み取るとVCが発行されます。

アップロードしたセルフィー写真がVCに含まれています。VC検証の際にはこの写真データを基に検証が行われます。

VC資格情報の検証(顔認証含む)

VC検証で顔認証が必要な場合ですが、操作は前回と同じですが、[Use FaceCheck]項目にチェックを入れる必要があります。

成功するとVCの詳細情報が、表示されます。前回の情報(氏名は違いますが)だけでなく、顔写真情報が追加されていることがわかります。

Authenticator側のVCでも、検証の成功が記録されています。テキスト情報(氏名)と生体認証(顔認証)の両方が合格していることがわかります。

ちなみに筆者は眼鏡をかけてセルフィーを撮りましたが、眼鏡をはずしてVCの検証を行った場合も、特に問題はありませんでした。顔情報の取得が困難(明るすぎる・揺れる等)な場合は、精緻な顔情報の確認が行われます。その結果問題がなければ、検証は成功となります。

ちなみに顔認証では「精度」を設定できます。デフォルトでは70%の精度ですが、50~100%の割合で変更が可能です。今回のMicrosoftサンプルアプリでは、[appsettings.json]のmatchConfidenceThresholdプロパティで設定されています。

ちなみに、matchConfidenceThresholdを70 → 100に変更し、写真と違う表情を付けた顔(変顔)で検証したところ「顔がVerified IDと一致しません」と記録され、失敗しました。表情とスコアが関係するのかしら?と思い、matchConfidenceThresholdを70 → 50に変更し、同様の顔(変顔)で検証したところ、なんとこちらも失敗してしまいました。
VCの検証結果のログを確認すると「Failed Face Check Liveness check.」と表示されており、(表情がつく等)顔認証の基本要件を満たしていないため、認証データが無効になってしまったのだとわかります。

ではどんな時にこのしきい値は有効になるのか?ですが、顔認証の際に「同僚に代わりに」顔を出してもらったところ、検証結果は「顔がVerified IDと一致しません」と記録されるのですが、ログを確認すると「Failed Face Check Match Check-confidence score failed to meet the minimum confidence threshold.」と表示されており、「顔チェックスコアがしきい値以下なので失敗した」ことがわかります。顔チェックをスコア化している事実が確認できました。

VCのこれから

Microsoft Entra Verified IDについては、要領がわかれば比較的簡単にVCの発行や検証が行えることがわかりました。特に「雇用証明」については、Microsoftでひな形を用意しており、Entra IDに登録されたユーザーであれば、気軽にVC資格発行の発行が可能です。
今回は検証していませんが、この形態(クイックセットアップ)での顔認証も簡単にできますので、本人確認も同時に行うことができます。ユースケースにもありましたが、[従業員確認]+[ベンダー・公的資格確認]+[本人確認]のVCを企業が発行できれば、公的資格の保証を利用者プロファイルに組み込めて、便利です。
ちなみにMicrosoft Entra エンタイトルメント管理という、Entra IDアカウントのライフサイクル管理を行うソリューションがあるのですが、この中でVCを使ったアクセス許可管理(アクセスパッケージ)を定義することができ、特定のVCを提示するユーザーだけ管理的操作を行うことができる、等が行えます。
VC資格情報の定義については、ひな形となるJSONは公開されており、いろいろな種類があることがわかります。

チュートリアル - ディレクトリ ベースの要求に対して Microsoft Entra 確認済み ID 資格情報を発行する - Microsoft Entra Verified ID | Microsoft Learn
ID トークン ヒントの検証可能な資格情報を作成する - Microsoft Entra Verified ID | Microsoft Learn
ID トークンの検証可能な資格情報を作成する - Microsoft Entra Verified ID | Microsoft Learn
既存の検証可能な資格情報からの要求を提示して、検証可能な資格情報を発行する - Microsoft Entra Verified ID | Microsoft Learn
セルフアサート要求の検証可能な資格情報を作成する - Microsoft Entra Verified ID | Microsoft Learn
複数の構成証明を使って検証可能な資格情報を作成する - Microsoft Entra Verified ID | Microsoft Learn

こういったVerifiable Credentialsの仕様をふまえて、アプリ開発者は適切なVC発行のスキーム(想定されたルール)を決定していく必要があります。
またVCの検証についてですが、検証アプリは検証時に、必要な属性の提示を要求します。利用者(wallet)はその要求に許可を与えるスタイルになります(検証では「共有する」という文言になります)。一般的にはアプリ側で考慮済みとは思いますが、利用者側でも「要求してくる属性情報」に敏感になり、必要以上の情報開示は行わないことが必要かと思います。そのためにVCの仕組みや利用上のポイントについて、リテラシーをあげていく必要がある、という風に思われます。
おりしもiPhoneでのマイナンバーカードが2025年6月から導入されました(iPhoneのマイナンバーカード | デジタル庁 ウェブサービス・アプリケーション)。マイナンバーカードはVCの一種ですので、今後は公的手続きを中心に「IC化による省力化」「選択的情報開示によるプライバシー保護」などが期待できます。もちろんVCですので民間でも活用可能ですが、それはこれから充実させていく、ということのようです。
マイナンバーカードVCに関しては、残念ながら派生VCは認めないという政府ガイドラインがあるようで、VC発行の実装はマイナンバーアプリに依存するようです。民間の発行VCの派生が行われるかどうかはわかりませんが、高い柔軟性をふまえた実装と運用が行われるのであれば、いろんな方がシアワセになるのかぁ、と思います。将来的には、お財布がカードで膨らむように、VCでwalletがパンパン...になるかもしれませんね。

さいごに

長きにわたって本コラムにお付き合いいただき、読者の方には感謝申し上げます。VCに関して今回のような内容は、他でも紹介されていたりするのですが、実際に自分で検証を行うことで、動作そのものの理解が深まりました。発展途上のVCではありますが、引き続き動静を見守っていきたい、と考えています。最後までご覧いただき、ありがとうございました。

  • 文中の商品名、会社名、団体名は、一般に各社の商標または登録商標です。

Microsoft Entra Verified IDを動かしてみる 第5回