Profile Annotation
Profile Annotation は Core Profile の主体に関する情報を表明するための VC の共通データモデルです。
用語
本文書に説明のない用語については、用語を参照してください。
- Core Profile (CP)
- Originator Profile Identifier (OP ID)
- OP VC Data Model Conforming Document (OP VC DM 準拠文書)
- Profile Annotation (PA)
Profile Annotation (PA) のデータモデル
Profile Annotation は OP VC DM 準拠文書でなければなりません (MUST)。他に以下のプロパティを含みます。
プロパティ
Profile Annotation のプロパティ一覧
| Name | Type | Description |
|---|---|---|
@context | string[] | REQUIRED. OP VC Data Model に従ってください (MUST)。 |
type | string[] | REQUIRED. 必ず ["VerifiableCredential", "ProfileAnnotation"] にしてください (MUST)。 |
issuer | string | REQUIRED. PA 発行者の OP ID でなければなりません (MUST)。 |
credentialSubject | object | REQUIRED. 次の credentialSubject のプロパティを含む JSON-LD Node Object です。 |
validFrom | string | OPTIONAL. Profile Annotation の有効期間の開始日時です。VC Data Model 2.0 4.9節 Validity Period に準拠します。dateTimeStamp データ型 でなければなりません (MUST)。この値を指定しないとき、有効期間の開始日時はなし(validUntil より過去のどの時点でも有効とする)を示します。 |
validUntil | string | OPTIONAL. Profile Annotation の有効期限です。VC Data Model 2.0 4.9節 Validity Period に準拠します。dateTimeStamp データ型 でなければなりません (MUST)。このプロパティの値は、Profile Annotation が含む情報が正しい最後の時刻を表します。この値を指定しないとき、有効期限なし(無期限)を示します。 |
validFrom、validUntil は Profile Annotation が含む情報の有効期間の開始日時、および有効期限であり、 VC の署名の有効期間の開始日時、有効期限とは異なります。現在 OP で採用している Securing Mechanism である VC-JOSE-COSE の JWT では、署名の有効期間の開始日時、有効期限は JWT の iat (issued at)、exp (expired at) クレームで指定します。 validFrom、validUntil プロパティの値は iat、exp クレームとは異なる値にすることができます。
異なる値を指定したいシナリオとして、有効期限が遠い将来の第三者認証を証明する VC を、定期的に再発行したいケースがあります。例えば、 2050-12-31T15:00:00Z に失効する第三者認証をこの仕様に基づいて Profile Annotation として発行する場合です。そのとき、署名の危殆化や鍵の漏洩によるセキュリティリスクを軽減するために、Profile Annotation を定期的に再発行することが考えられます。定期的な再発行を促すため、署名に有効期限を設け、1年ごとに署名が失効するようにします。その場合、署名の有効期限(1年後)を exp クレームに指定し、 validUntil は再発行した日付によらず 2050-12-31T15:00:00Z にすることで、再発行を行いながら、第三者認証の有効期限を正確に表現することができます。
プロパティの定義については VC Data Model 2.0 4.9節 Validity Period を参照ください。
credentialSubject のプロパティ一覧
| Name | Type | Description |
|---|---|---|
id | string | REQUIRED. PA 保有組織の OP ID でなければなりません (MUST)。 |
type | string | REQUIRED. PA のタイプ名です。既存の型は Profile Annotation Type Registry に登録されており、必要に応じて拡張して新しい型を定義できます (MAY)。 |
name | string | OPTIONAL. PA 名です。 |
description | string | OPTIONAL. PA の説明です。 |
image | object | OPTIONAL. image データ型 の JSON-LD Node Object でなければなりません (MUST)。このプロパティで Profile Annotation の画像が改ざんされていないかを検証することができます。 |
annotationScheme | string[] | OPTIONAL. credentialSubject JSON-LD Node Object で表明される PA のほかに、 credentialSubject.annotation プロパティの Profile Annotation Policy に基づいて発行される一連の Profile Annotation の集合です。Profile Annotation を一意に識別する URI の配列でなければなりません (MUST)。 |
annotation | object | REQUIRED. Profile Annotation Policy でなければなりません (MUST)。 |
Profile Annotation で検証する属性あるいは発行ポリシーが同種で、Profile Annotation を保有する組織だけが異なるものは、同じ annotation.id の値であるべき (SHOULD) です。
また、Profile Annotation Policy の名前、説明、URL は発行時点で最新の内容であるべき (SHOULD) です。
拡張性
発行者は OP VC Data Model および本文書に未定義のプロパティを追加してもよいです (MAY) が、その場合は登録プロセスに従ってください (MUST)。
Appendix
例
このセクションは非規範的です。
PA の具体例を次に示します。
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://originator-profile.org/ns/credentials/v1",
{
"@language": "ja"
}
],
"type": ["VerifiableCredential", "ProfileAnnotation"],
"issuer": "dns:profile-annotator.example.org",
"credentialSubject": {
"id": "dns:pa-holder.example.org",
"type": "<PA タイプ>",
"name": "<PA 名>",
"description": "<PA の説明>",
"annotation": {
"id": "urn:uuid:14270f8f-9f1c-4f89-9fa4-8c93767a8404",
"type": "ProfileAnnotationPolicy",
"name": "<Profile Annotation Policy 名>",
"description": "<Profile Annotation Policy の説明>",
"ref": "https://annotation.example.org/about"
}
}
}