メインコンテンツまでスキップ

OpenID Connect for Identity Assurance(IDA)

OpenID Connect for Identity Assurance は、身元確認(本人確認)の結果を標準化された方法で RP に伝達するための仕様です。


第1部: 概要編

Identity Assurance とは?

Identity Assurance(IDA)は、「ユーザーが本当に主張する人物である」ことをどの程度確信できるかを表す概念です。

従来の OIDC:
「このユーザーは user@example.com として認証された」
→ でも、その人が本当に誰なのかは分からない

OIDC for IDA:
「このユーザーは山田太郎で、パスポートで本人確認済み」
→ 身元確認の方法と結果も伝える

┌──────────────────────────────────────────────────┐
│ ID Token / UserInfo │
├──────────────────────────────────────────────────┤
│ sub: user-123 │
│ name: 山田太郎 │
│ verified_claims: │
│ verification: │
│ trust_framework: jp_aml │
│ evidence: │
│ - type: document │
│ document_type: passport │
│ claims: │
│ given_name: 太郎 │
│ family_name: 山田 │
│ birthdate: 1990-01-01 │
└──────────────────────────────────────────────────┘

なぜ IDA が必要なのか?

シナリオ従来の問題IDA による解決
金融口座開設本人確認書類の情報が伝わらない確認方法・書類種別を標準形式で伝達
規制対応(KYC/AML)確認レベルが不明trust_framework で法的枠組みを明示
相互運用性OP ごとに独自形式標準化された verified_claims 形式
監査対応確認プロセスの記録が散逸evidence で確認証跡を提供

主要な概念

概念説明
verified_claims身元確認されたクレームを含むコンテナ
verification身元確認プロセスの情報
trust_framework準拠する法的・規制枠組み
evidence身元確認に使用された証拠
assurance_level確認の信頼レベル

第2部: 詳細編

verified_claims の構造

{
"verified_claims": {
"verification": {
"trust_framework": "jp_aml",
"time": "2024-01-15T10:30:00Z",
"verification_process": "eKYC",
"evidence": [
{
"type": "document",
"method": "pipp",
"time": "2024-01-15T10:25:00Z",
"document": {
"type": "passport",
"issuer": {
"name": "日本国",
"country": "JP"
},
"number": "AB1234567",
"date_of_issuance": "2020-04-01",
"date_of_expiry": "2030-03-31"
}
}
]
},
"claims": {
"given_name": "太郎",
"family_name": "山田",
"birthdate": "1990-01-01",
"place_of_birth": {
"country": "JP",
"locality": "東京都"
},
"nationalities": ["JP"],
"address": {
"formatted": "東京都千代田区丸の内1-1-1",
"country": "JP",
"region": "東京都",
"locality": "千代田区",
"postal_code": "100-0005"
}
}
}
}

verification オブジェクト

フィールド説明
trust_framework準拠する法的枠組み
time確認が行われた時刻
verification_process確認プロセスの識別子
evidence確認に使用された証拠の配列
assurance_level確認の信頼レベル

trust_framework の例

説明
jp_aml日本の犯罪収益移転防止法
de_amlドイツのマネーロンダリング防止法
eidasEU の eIDAS 規則
nist_800_63ANIST SP 800-63A
uk_tfida英国 Trust Framework for Identity Assurance

evidence(証拠)

document(書類による確認)

{
"type": "document",
"method": "pipp",
"verifier": {
"organization": "Example Bank",
"txn": "verification-12345"
},
"time": "2024-01-15T10:25:00Z",
"document": {
"type": "passport",
"issuer": {
"name": "日本国",
"country": "JP"
},
"number": "AB1234567",
"date_of_issuance": "2020-04-01",
"date_of_expiry": "2030-03-31"
}
}
method説明
pippPhysical In-Person Proofing(対面確認)
srippSupervised Remote In-Person Proofing(リモート対面)
eid電子身分証(マイナンバーカード等)
urippUnsupervised Remote In-Person Proofing

document_type の例

説明
passportパスポート
driving_permit運転免許証
residence_permit在留カード
idcardID カード
bank_statement銀行明細
utility_statement公共料金明細

electronic_record(電子記録による確認)

{
"type": "electronic_record",
"check_details": [
{
"check_method": "kbv",
"organization": "Credit Bureau",
"time": "2024-01-15T10:20:00Z"
}
],
"record": {
"type": "bank_account",
"source": {
"name": "Example Bank"
}
}
}

vouch(保証)

{
"type": "vouch",
"validation_method": {
"type": "vpip"
},
"verifier": {
"organization": "Notary Public"
},
"attestation": {
"type": "digital_attestation",
"reference_number": "VOUCH-12345"
}
}

electronic_signature(電子署名)

{
"type": "electronic_signature",
"signature_type": "QES",
"issuer": "Qualified Trust Service Provider",
"serial_number": "1234567890",
"created_at": "2024-01-15T10:15:00Z"
}

認可リクエストでの要求

claims パラメータ

{
"userinfo": {
"verified_claims": {
"verification": {
"trust_framework": null,
"evidence": [
{
"type": {
"value": "document"
},
"document": {
"type": null
}
}
]
},
"claims": {
"given_name": null,
"family_name": null,
"birthdate": {
"essential": true
}
}
}
}
}

purpose(目的の指定)

{
"userinfo": {
"verified_claims": {
"verification": {
"trust_framework": null
},
"claims": {
"given_name": {
"purpose": "金融口座開設のための本人確認"
},
"family_name": {
"purpose": "金融口座開設のための本人確認"
},
"birthdate": {
"essential": true,
"purpose": "年齢確認"
}
}
}
}
}

特定の trust_framework を要求

{
"userinfo": {
"verified_claims": {
"verification": {
"trust_framework": {
"value": "jp_aml"
}
},
"claims": {
"given_name": null,
"family_name": null
}
}
}
}

複数の verified_claims

異なる trust_framework で確認された複数のクレームセットを返すことができます。

{
"verified_claims": [
{
"verification": {
"trust_framework": "jp_aml"
},
"claims": {
"given_name": "太郎",
"family_name": "山田"
}
},
{
"verification": {
"trust_framework": "eidas",
"assurance_level": "high"
},
"claims": {
"given_name": "Taro",
"family_name": "Yamada"
}
}
]
}

ディスカバリーメタデータ

{
"issuer": "https://op.example.com",
"verified_claims_supported": true,
"trust_frameworks_supported": [
"jp_aml",
"eidas",
"nist_800_63A"
],
"evidence_supported": [
"document",
"electronic_record",
"vouch",
"electronic_signature"
],
"documents_supported": [
"passport",
"driving_permit",
"idcard",
"residence_permit"
],
"documents_methods_supported": [
"pipp",
"sripp",
"eid"
],
"claims_in_verified_claims_supported": [
"given_name",
"family_name",
"birthdate",
"place_of_birth",
"nationalities",
"address"
]
}

assurance_level

eIDAS や NIST などの規格で定義された信頼レベル。

{
"verification": {
"trust_framework": "eidas",
"assurance_level": "high"
}
}
規格レベル
eIDASlow, substantial, high
NIST 800-63AIAL1, IAL2, IAL3

セキュリティ考慮事項

項目推奨事項
暗号化verified_claims は暗号化された UserInfo で返す
最小限の開示必要なクレームのみ要求
purpose利用目的を明示
有効期限確認の time を考慮(古すぎないか)
証跡管理evidence 情報を監査用に保存

参考リンク