OPEN-SOURCE OIDC4VP VERIFIER

請出示皮夾

輕量化查驗證件,支援數位皮夾

支援數位發展部「數位憑證皮夾」,讓你可以一鍵建立自己的驗證服務

給皮夾使用者

用真實流程測試你的卡片

先看到查驗方要求哪些欄位,再由數位憑證皮夾或有備而來掃描、同意並出示。結果會區分密碼學驗證與情境判斷。

前往示範查驗

給服務提供者

用自己的網域建立驗證服務

從 Cloudflare 免費方案開始,部署獨立 verifier、持久的 did:key 與一次性查驗流程,也能透過 API 接進既有服務。

查看部署與整合方式

TRY THE VERIFIER

建立一筆示範查驗

每個情境都先列出必要欄位。卡片若缺少其中一欄,皮夾會拒絕出示,不會用相近欄位代替。

1

選擇要測試的皮夾

預設使用已公開下載的數位憑證皮夾;有備而來目前列為開發測試相容層。

2

選擇驗證目的

使用情境決定資料需求,不從欄位清單倒推用途。

3

選擇可接受的卡片來源

同一個欄位由不同卡片簽署,代表的信任關係並不相同。

PRIVACY BY DESIGN

個人資料蒐集、處理及利用告知

不留存查驗資料

完整告知事項與個資法依據

查驗的證據簽章、nonce、audience、holder binding、issuer 信任與憑證狀態
資料保存presentation 與揭露欄位只在單次請求的記憶體中處理,不寫入 Durable Object、log 或 analytics
標準範圍官方皮夾使用 TWDIW Presentation Exchange;有備而來另保留 OIDC4VP 1.0 DCQL 相容層

FOR DEVELOPERS

部署一套,或接進你原本的服務

公開 repo 已經包含 Cloudflare Worker、Durable Objects、驗證情境 API、部署 skill 與可直接交給 coding agent 的 prompt。第一次啟動時會在自己的 Durable Object 產生 P-256 did:key。

AGENT SKILL

交給開發代理部署

Skill 會先確認新部署或既有服務整合,再處理自訂網域、信任設定、測試與真機驗收邊界。

開啟部署 skill

EMBED WITH API

接進既有網站或流程

讀取 GET /api/profiles,以 POST /api/presentations 建立 QR,再由一次性 WebSocket 接收結果。揭露資料不寫入 Cloudflare 儲存。

閱讀內嵌指南

PRIVACY COMPLIANCE

套用個資告知模組

查驗前依目的列出資料類別、利用期間/地區/對象/方式、當事人權利與拒絕影響。自行部署時必須換成實際營運者資料。

閱讀合規實作指南

COPYABLE PROMPT

直接交給 coding agent

請使用 https://github.com/mashbean/twdiw-vp-verifier-lite,幫我把「請出示皮夾」部署到 Cloudflare Workers。先使用官方 DID 信任清單,不新增自訂 trusted issuer。保留 Durable Object 內的 verifier did:key;presentation 與揭露欄位只能在單次請求記憶體中處理,不可寫入 Durable Object、log 或 analytics。完成測試、typecheck、dry-run 與公開網址檢查,並把官方數位憑證皮夾的真實跨裝置驗收列為獨立步驟。
開啟完整 prompt 與可填參數
標準與台灣相容層

OIDC4VP 1.0 Final 使用 DCQL。台灣現行皮夾仍以 Presentation Exchange 為主要請求格式,因此這個版本同時送出兩者,並標示為 TWDIW 相容模式。這不代表已通過 OpenID Foundation conformance certification。

Q&A

開始前常見的問題

民眾可以在這裡測試什麼?

你可以建立一筆示範查驗,觀察皮夾能否讀取請求、顯示正確欄位、完成同意與出示。不同發卡者的欄位名稱可能不同,卡片缺少必要欄位時不會出示。

資料會被保存或拿去分析嗎?

應用程式不保存。Worker 只在收到 presentation 的那次請求中完成驗證,再經已驗證 capability 的 WebSocket 把結果交給建立查驗的瀏覽器。credential、presentation、揭露欄位與結果不寫入 Durable Object;查驗完成後連 session metadata 也立即刪除。此部署同時停用 Workers Logs 持久化,頁面不載入第三方 analytics。Cloudflare 仍是 HTTPS 流量處理者;部署者若另開 Logpush、代理或錯誤追蹤,需自行維持相同界線。

不保存資料,為什麼仍要顯示個資告知?

個資法所稱「蒐集」包含以任何方式取得個人資料,不以寫進資料庫為前提。查驗器會在記憶體中接收並判讀持卡人出示的欄位,因此仍在建立 QR 前列出告知事項。零持久化降低後續風險,但不能取代合法事由、目的限制與明確告知。

業者真的可以免費建立服務嗎?

程式碼以 GPL-3.0-only 開源,可從 Cloudflare Workers 免費方案開始。實際是否產生費用取決於流量、用量與 Cloudflare 當期方案。

可以直接用 iframe 放進網站嗎?

示範站基於安全考量禁止 iframe。既有服務可使用 API 建立查驗、呈現 QR 或導向固定情境連結,並自行設計結果頁。

已滿 18 歲就是零知識證明嗎?

不一定。只有卡片直接提供年齡述詞時,才能只揭露該述詞;以生日在 verifier 端計算年齡仍屬選擇性揭露,不是零知識證明。想試真正的零知識年齡證明,請到零知識證明測試頁,用有備而來建立「已滿 N 歲」的證明並比較耗時。

這是數位發展部的官方服務嗎?

不是。這是獨立維護的開源實作,用於研究、測試與快速建立查驗服務,與數位發展部及各發卡機關沒有隸屬關係。

ECOSYSTEM

相關服務與技術資料