Web Authentication: An API for accessing Public Key Credentials Level 3
Editor’s Draft, 6 April 2022
dictionary PublicKeyCredentialCreationOptions {
required PublicKeyCredentialRpEntity rp;
required PublicKeyCredentialUserEntity user;
required BufferSource challenge;
required sequence<PublicKeyCredentialParameters> pubKeyCredParams;
unsigned long timeout;
sequence<PublicKeyCredentialDescriptor> excludeCredentials = [];
AuthenticatorSelectionCriteria authenticatorSelection;
DOMString attestation = "none";
AuthenticationExtensionsClientInputs extensions;
};
rp, of type PublicKeyCredentialRpEntity
This member contains a name and an identifier for the Relying Party responsible for the request.
このメンバーはこのリクエストに責任のある Relying Party の名前と識別子を含む。
Its value’s name member is REQUIRED. See § 5.4.1 Public Key Entity Description (dictionary PublicKeyCredentialEntity) for further details.
この値の name メンバーは必須である。さらなる詳細は § 5.4.1 Public Key Entity Description (dictionary PublicKeyCredentialEntity) を参照すること。
Its value’s id member specifies the RP ID the credential should be scoped to. If omitted, its value will be the CredentialsContainer object’s relevant settings object's origin's effective domain. See § 5.4.2 Relying Party Parameters for Credential Generation (dictionary PublicKeyCredentialRpEntity) for further details.
この値の id メンバーはこのクレデンシャルがスコープされるべき RP ID を指定する。省略された場合、CredentialsContainer オブジェクトの関連する設定オブジェクトの origin の有効ドメインとなる。さらなる詳細は§ 5.4.2 Relying Party Parameters for Credential Generation (dictionary PublicKeyCredentialRpEntity) を参照すること。
user, of type PublicKeyCredentialUserEntity
This member contains names and an identifier for the user account performing the registration.
このメンバーは登録を行うユーザーアカウントの名前と識別子を含む。
Its value’s name, displayName and id members are REQUIRED. id can be returned as the userHandle in some future authentication ceremonies, and is used to overwrite existing discoverable credentials that have the same rp.id and user.id on the same authenticator. name and displayName MAY be used by the authenticator and client in future authentication ceremonies to help the user select a credential, but are not returned to the Relying Party as a result of future authentication ceremonies
この値の name, displayName, id メンバーは必須である。id は今後の認証セレモニーで userHandle として返され得る。また、同じ認証器の同じ rp.id と user.id を持つ、既存の discoverable credentials で上書きするのに使われる。name と displayName は認証器とクライアントによって、今後の認証セレモニーでユーザーがクレデンシャルを選択するのを助けるのに使われ得るが、今後の認証セレモニーの結果として Relying Party へは返却されない。
For further details, see § 5.4.1 Public Key Entity Description (dictionary PublicKeyCredentialEntity) and § 5.4.3 User Account Parameters for Credential Generation (dictionary PublicKeyCredentialUserEntity).
さらなる詳細は § 5.4.1 Public Key Entity Description (dictionary PublicKeyCredentialEntity) と § 5.4.3 User Account Parameters for Credential Generation (dictionary PublicKeyCredentialUserEntity). を参照すること。
challenge, of type BufferSource
This member specifies a challenge that the authenticator signs, along with other data, when producing an attestation object for the newly created credential. See the § 13.4.3 Cryptographic Challenges security consideration.
このメンバーは新しく作成されたクレデンシャルのためのアテステーションオブジェクトの生成時に、他のデータとともに認証器が署名するチャレンジを指定する。§ 13.4.3 Cryptographic Challenges セキュリティ考慮事項を参照すること。
pubKeyCredParams, of type sequence<PublicKeyCredentialParameters>
This member lists the key types and signature algorithms the Relying Party supports, ordered from most preferred to least preferred. The client and authenticator make a best-effort to create a credential of the most preferred type possible. If none of the listed types can be created, the create() operation fails.
このメンバーは Relying Party がサポートする鍵のタイプと署名アルゴリズムを、最も望ましいものを先頭にした望ましさ順で並べたリストである。クライアントと認証器は最も望ましい利用可能なクレデンシャルをベストエフォートで作成する。もしリストされたタイプで作成可能なものがなければ、create() は失敗する。
timeout, of type unsigned long
This OPTIONAL member specifies a time, in milliseconds, that the Relying Party is willing to wait for the call to complete. This is treated as a hint, and MAY be overridden by the client.
この任意メンバーは、Relying Party が呼び出しの完了を待機する時間をミリ秒で指定する。これはヒントとして扱われ、クライアントによって上書きされうる。
excludeCredentials, of type sequence<PublicKeyCredentialDescriptor>, defaulting to []
The Relying Party SHOULD use this OPTIONAL member to list any existing credentials mapped to this user account (as identified by user.id). This ensures that the new credential is not created on an authenticator that already contains a credential mapped to this user account. If it would be, the client is requested to instead guide the user to use a different authenticator, or return an error if that fails.
Relying Party は user.id によって識別されるこのユーザーアカウントにマッピングされている既存のクレデンシャルをリストして使うべきである。これは、すでにこのユーザーアカウントにマッピングされたクレデンシャルを含む認証器に新しいクレデンシャルが作成されないことを保証する。そのような場合、クライアントは異なる認証器の利用を誘導され、失敗したらエラーが返される。
authenticatorSelection, of type AuthenticatorSelectionCriteria
The Relying Party MAY use this OPTIONAL member to specify capabilities and settings that the authenticator MUST or SHOULD satisfy to participate in the create() operation. See § 5.4.4 Authenticator Selection Criteria (dictionary AuthenticatorSelectionCriteria).
Relying Party はこの任意メンバーを create() で認証器が満たさなければいけない、もしくは満たすべき能力や設定を指定するのに使う。§ 5.4.4 Authenticator Selection Criteria (dictionary AuthenticatorSelectionCriteria). を参照すること。
attestation, of type DOMString, defaulting to "none"
The Relying Party MAY use this OPTIONAL member to specify a preference regarding attestation conveyance. Its value SHOULD be a member of AttestationConveyancePreference. Client platforms MUST ignore unknown values, treating an unknown value as if the member does not exist.
Relying Party はこの任意メンバーをアテステーション伝達に関する優先順位を指定するのに使っても良い。値はAttestationConveyancePreference のメンバーであるべきである。クライアントプラットフォームは不明な値を無視し、不明な値を存在しないかのように振る舞う必要がある。
extensions, of type AuthenticationExtensionsClientInputs
The Relying Party MAY use this OPTIONAL member to provide client extension inputs requesting additional processing by the client and authenticator. For example, the Relying Party may request that the client returns additional information about the credential that was created.
Relying Party はこの任意のメンバーをクライアントと認証器に追加の処理を要求するクライアント拡張入力を提示するのに利用してもよい。例えば、Relying Party は作成されるクレデンシャルについて追加の情報を返すことを、クライアントに要求できるかもしれない。
The extensions framework is defined in § 9 WebAuthn Extensions. Some extensions are defined in § 10 Defined Extensions; consult the IANA "WebAuthn Extension Identifiers" registry [IANA-WebAuthn-Registries] established by [RFC8809] for an up-to-date list of registered WebAuthn Extensions.
拡張フレームワークは § 9 WebAuthn Extensions で定義される。いくつかの拡張は § 10 Defined Extensions で定義される。登録済みの WebAuthn 拡張の最新のリストは、[RFC8809] で規定された IANA "WebAuthn Extension Identifiers" [IANA-WebAuthn-Registries] レジストリを参照すること。
The PublicKeyCredentialEntity dictionary describes a user account, or a WebAuthn Relying Party, which a public key credential is associated with or scoped to, respectively.
PublicKeyCredentialEntity ディクショナリーは公開鍵クレデンシャルが関連付けられるユーザーアカウントもしくは スコープされる WebAuthn Relying Party を記述する。
dictionary PublicKeyCredentialEntity {
required DOMString name;
};
name, of type DOMString
A human-palatable name for the entity. Its function depends on what the PublicKeyCredentialEntity represents:
When inherited by PublicKeyCredentialRpEntity it is a human-palatable identifier for the Relying Party, intended only for display. For example, "ACME Corporation", "Wonderful Widgets, Inc." or "ОАО Примертех".
Relying Parties SHOULD perform enforcement, as prescribed in Section 2.3 of [RFC8266] for the Nickname Profile of the PRECIS FreeformClass [RFC8264], when setting name's value, or displaying the value to the user.
This string MAY contain language and direction metadata. Relying Parties SHOULD consider providing this information. See § 6.4.2 Language and Direction Encoding about how this metadata is encoded.
When inherited by PublicKeyCredentialUserEntity, it is a human-palatable identifier for a user account. It is intended only for display, i.e., aiding the user in determining the difference between user accounts with similar displayNames. For example, "alexm", "[email protected]" or "+14255551234".
The Relying Party MAY let the user choose this value. The Relying Party SHOULD perform enforcement, as prescribed in Section 3.4.3 of [RFC8265] for the UsernameCasePreserved Profile of the PRECIS IdentifierClass [RFC8264], when setting name's value, or displaying the value to the user.
This string MAY contain language and direction metadata. Relying Parties SHOULD consider providing this information. See § 6.4.2 Language and Direction Encoding about how this metadata is encoded.
Clients SHOULD perform enforcement, as prescribed in Section 3.4.3 of [RFC8265] for the UsernameCasePreserved Profile of the PRECIS IdentifierClass [RFC8264], on name's value prior to displaying the value to the user or including the value as a parameter of the authenticatorMakeCredential operation.
Clients SHOULD perform enforcement, as prescribed in Section 3.4.3 of [RFC8265] for the UsernameCasePreserved Profile of the PRECIS IdentifierClass [RFC8264], on name's value prior to displaying the value to the user or including the value as a parameter of the authenticatorMakeCredential operation.
- エンティティの human-palatable(人間に使いやすい) 名前で、この機能は PublicKeyCredentialEntity が何を表現しているかに依存する。
- もし PublicKeyCredentialRpEntity を継承している場合、これは human-palatable な、表示にのみ使われる [Relying Party] の識別子である。例: "ACME Corporation"、 "Wonderful Widgets, Inc." や "ОАО Примертех"。
- Relying Partyはname の値を設定したり、ユーザーに値を表示する際、Nickname Profile of the PRECIS FreeformClass [RFC8264]のため[RFC8266] のセクション 2.3 で言及された通り、enforcement を行うべきである。
- この文字列は言語と向き(どちらから読むか)のメタデータを含んでもよい。Relying Party はこの情報を提供するか検討すべきである。このメタデータをどのようにエンコーディングすれべきかについては、§ 6.4.2 Language and Direction Encoding を参照すること。
- もし PublicKeyCredentialUserEntity を継承している場合、これは human-palatable な、表示にのみ使われる ユーザーアカウントの識別子である。これは、似ている displayName をもった異なるユーザーアカウント間でユーザーを決めるのに役立つ。例: "alexm"、"[email protected]" や "+14255551234"。
- Relying Party はユーザーにこの値を選択させてもよい。Relying Partyはname の値を設定したり、ユーザーに値を表示する際、Nickname Profile of the PRECIS FreeformClass [RFC8264]のため[RFC8266] のセクション 2.3 で言及された通り、enforcement を行うべきである。
- この文字列は言語と向き(どちらから読むか)のメタデータを含んでもよい。Relying Party はこの情報を提供するか検討すべきである。このメタデータをどのようにエンコーディングすれべきかについては、§ 6.4.2 Language and Direction Encoding を参照すること。
- クライアントは事前にユーザーに表示した name の値や、authenticatorMakeCredential 操作のパラメーターの値に含まれる name の値 において UsernameCasePreserved Profile of the PRECIS IdentifierClass RFC8264 のため、 [RFC8265] で言及されたように enforcement を行うべきである。
When clients, client platforms, or authenticators display a name's value, they should always use UI elements to provide a clear boundary around the displayed value, and not allow overflow into other elements [css-overflow-3].
クライアント、クライアントプラットフォーム、認証器が name の値を表示する際、値の周りに明確な境界を提供する UI エレメントをいつも利用すべきであり、他のエレメントへのオーバーフローを許可してはいけない[css-overflow-3]。
Authenticators MAY truncate a name member’s value so that it fits within 64 bytes, if the authenticator stores the value. See § 6.4.1 String Truncation about truncation and other considerations.
認証器が値を保存する場合、 64 バイトに合わせて name メンバーを切りつめても良い。切り詰めと他の考慮事項については § 6.4.1 String Truncation を参照すること。
The PublicKeyCredentialRpEntity dictionary is used to supply additional Relying Party attributes when creating a new credential.
PublicKeyCredentialRpEntity ディクショナリーは新しいクレデンシャルが作成される際に追加の Relying Party 属性を提供するために利用される。
dictionary PublicKeyCredentialRpEntity : PublicKeyCredentialEntity {
DOMString id;
};
id, of type DOMString
A unique identifier for the Relying Party entity, which sets the RP ID.
Relying Party のユニークな識別子で、RP ID にセットされる。
5.4.3. User Account Parameters for Credential Generation (dictionary PublicKeyCredentialUserEntity)
The PublicKeyCredentialUserEntity dictionary is used to supply additional user account attributes when creating a new credential.
PublicKeyCredentialUserEntity ディクショナリーは新しいクレデンシャルが作成される際に追加の ユーザーアカウント 属性を提供するために利用される。
dictionary PublicKeyCredentialUserEntity : PublicKeyCredentialEntity {
required BufferSource id;
required DOMString displayName;
};
id, of type BufferSource
The user handle of the user account. A user handle is an opaque byte sequence with a maximum size of 64 bytes, and is not meant to be displayed to the user.
ユーザーアカウントのユーザーハンドル。ユーザーハンドルとは、不透明な最大 64 バイトのバイトシーケンスであり、ユーザーに表示されることを意図していない。
To ensure secure operation, authentication and authorization decisions MUST be made on the basis of this id member, not the displayName nor name members. See Section 6.1 of [RFC8266].
セキュアな操作を担保するため、認証と認可の決定は displayName や name メンバーではなく、この id メンバーをもとに行われなければならない。[RFC8266] のセクション 6.1 を参照すること。
The user handle MUST NOT contain personally identifying information about the user, such as a username or e-mail address; see § 14.6.1 User Handle Contents for details. The user handle MUST NOT be empty.
ユーザーハンドルはユーザー名やメールアドレスのようなユーザーについての個人を特定する情報を含んではならない。詳細は§ 14.6.1 User Handle Contents を参照すること。ユーザーハンドルは空ではいけない。
Note: the user handle ought not be a constant value across different user accounts, even for non-discoverable credentials, because some authenticators always create discoverable credentials. Thus a constant user handle would prevent a user from using such an authenticator with more than one user account at the Relying Party.
Note: ユーザーハンドル は、non-discoverable なクレデンシャルであったとしても異なるユーザーアカウントをまたいだ定数であるべきではない。なぜなら、いくつかの認証器はいつもnon-discoverable なクレデンシャルを作成するからだ。そのため、定数のユーザーハンドルはユーザーがそのような認証機で、Relying Party に 1 つ以上のユーザーアカウントを利用するのを妨げる。
displayName, of type DOMString
A human-palatable name for the user account, intended only for display. For example, "Alex Müller" or "田中倫". The Relying Party SHOULD let the user choose this, and SHOULD NOT restrict the choice more than necessary.
ユーザーアカウントの human-palatable(人間に使いやすい) な名前。例えば、"Alex Müller" や "田中倫"。Relying Party はユーザーにこれを選択させるべきであり、必要以上にこの選択に制限をするべきではない。
Relying Parties SHOULD perform enforcement, as prescribed in Section 2.3 of [RFC8266] for the Nickname Profile of the PRECIS FreeformClass [RFC8264], when setting displayName's value, or displaying the value to the user.
This string MAY contain language and direction metadata. Relying Parties SHOULD consider providing this information. See § 6.4.2 Language and Direction Encoding about how this metadata is encoded.
Clients SHOULD perform enforcement, as prescribed in Section 2.3 of [RFC8266] for the Nickname Profile of the PRECIS FreeformClass [RFC8264], on displayName's value prior to displaying the value to the user or including the value as a parameter of the authenticatorMakeCredential operation.
- Relying Partyはname の値を設定したり、ユーザーに値を表示する際、Nickname Profile of the PRECIS FreeformClass [RFC8264]のため[RFC8266] のセクション 2.3 で言及された通り、enforcement を行うべきである。
- この文字列は言語と向き(どちらから読むか)のメタデータを含んでもよい。Relying Party はこの情報を提供するか検討すべきである。このメタデータをどのようにエンコーディングすれべきかについては、§ 6.4.2 Language and Direction Encoding を参照すること。
- クライアントは事前にユーザーに表示したdisplayName の値や、authenticatorMakeCredential 操作のパラメーターの値に含まれる値に、Nickname Profile of the PRECIS FreeformClass [RFC8264]のため[RFC8266] のセクション 2.3 で言及された通り、enforcement を行うべきである。
When clients, client platforms, or authenticators display a displayName's value, they should always use UI elements to provide a clear boundary around the displayed value, and not allow overflow into other elements [css-overflow-3].
クライアント、クライアントプラットフォーム、認証器が name の値を表示する際、値の周りに明確な境界を提供する UI エレメントをいつも利用すべきであり、他のエレメントへのオーバーフローを許可してはいけない[css-overflow-3]。
Authenticators MUST accept and store a 64-byte minimum length for a displayName member’s value. Authenticators MAY truncate a displayName member’s value so that it fits within 64 bytes. See § 6.4.1 String Truncation about truncation and other considerations.
認証器は最小 64 バイト長で、displayName メンバーの値をを受け入れ保存しなければならない。認証器は [displayName] メンバーの値を 64 バイトに合わせて切りつめても良い。切り詰めと他の考慮事項については § 6.4.1 String Truncation を参照すること。
WebAuthn Relying Parties may use the AuthenticatorSelectionCriteria dictionary to specify their requirements regarding authenticator attributes.
WebAuthn Relying Party は AuthenticatorSelectionCriteria ディクショナリを認証器の属性に関する要求を指定するのに使える。
dictionary AuthenticatorSelectionCriteria {
DOMString authenticatorAttachment;
DOMString residentKey;
boolean requireResidentKey = false;
DOMString userVerification = "preferred";
};
authenticatorAttachment, of type DOMString
If this member is present, eligible authenticators are filtered to be only those authenticators attached with the specified authenticator attachment modality (see also § 6.2.1 Authenticator Attachment Modality). If this member is absent, then any attachment modality is acceptable. The value SHOULD be a member of AuthenticatorAttachment but client platforms MUST ignore unknown values, treating an unknown value as if the member does not exist.
もしこのメンバーが存在したら、適格な認証器が指定されたauthenticator attachment modalityでアタッチされた認証機だけにフィルタリングされる。(https://w3c.github.io/webauthn/#sctn-authenticator-attachment-modality を参照すること。もしこのメンバーが存在しなければ、どのような attachment modality も許容される。この値は AuthenticatorAttachment のメンバーであるべきであるが、クライアントプラットフォームは不明な値を無視しなければならず、不明な値を存在しないメンバーかのように扱わなければならない。
See also the authenticatorAttachment member of PublicKeyCredential, which can tell what authenticator attachment modality was used in a successful create() or get() operation.
成功した create() や get() で、どの authenticator attachment modality が利用されたのか知るための PublicKeyCredential のメンバー authenticatorAttachment も参照すること。
residentKey, of type DOMString
Specifies the extent to which the Relying Party desires to create a client-side discoverable credential. For historical reasons the naming retains the deprecated “resident” terminology. The value SHOULD be a member of ResidentKeyRequirement but client platforms MUST ignore unknown values, treating an unknown value as if the member does not exist. If no value is given then the effective value is required if requireResidentKey is true or discouraged if it is false or absent.
Relying Party が client-side discoverable credential の作成をを望む度合いを指定する。歴史的な理由で、廃止された用語「resident」が残っている。この値は ResidentKeyRequirement のメンバーであるべきであり、クライアントプラットフォーム は不明な値を無視しなければならず、不明な値を存在しないメンバーかのように扱わなければならない。もし値が与えられなかった場合、requireResidentKey が true であれば、required に、false もしくは未指定であれば discouraged となる。
See ResidentKeyRequirement for the description of residentKey's values and semantics.
residentKey の値とセマンティクスについての説明は、ResidentKeyRequirement を参照すること。
requireResidentKey, of type boolean, defaulting to false
This member is retained for backwards compatibility with WebAuthn Level 1 and, for historical reasons, its naming retains the deprecated “resident” terminology for discoverable credentials. Relying Parties SHOULD set it to true if, and only if, residentKey is set to required.
このメンバーは WebAuthn Level 1 の後方互換性のために残っている。歴史的な理由で、discoverable credentials のための廃止された用語「resident」が残っている。Relying Party は、residentKey に required が設定されている場合だけ、この値を true にすべきである。
userVerification, of type DOMString, defaulting to "preferred"
This member specifies the Relying Party's requirements regarding user verification for the create() operation. The value SHOULD be a member of UserVerificationRequirement but client platforms MUST ignore unknown values, treating an unknown value as if the member does not exist.
このメンバーは [crete()] のための user verification に関する Relying Party の要求を指定する。この値は UserVerificationRequirement のメンバーであるべきであり、クライアントプラットフォーム は不明な値を無視しなければならず、不明な値を存在しないメンバーかのように扱わなければならない。
See UserVerificationRequirement for the description of userVerification's values and semantics.
userVerification の値とセマンティクスについての説明は、UserVerificationRequirement を参照すること。
This enumeration’s values describe authenticators' attachment modalities. Relying Parties use this to express a preferred authenticator attachment modality when calling navigator.credentials.create() to create a credential, and clients use this to report the authenticator attachment modality used to complete a registration or authentication ceremony.
この列挙された値は認証器の attachment modalities について言及している。Relying Party は クレデンシャルの作成 のために、navigator.credentials.create() を呼ぶ際、これを好ましい authenticator attachment modality を表現し、クライアントはこれを登録もしくは認証セレモニーの完了に利用されたauthenticator attachment modalityを報告するために利用する。
enum AuthenticatorAttachment {
"platform",
"cross-platform"
};
Note: The AuthenticatorAttachment enumeration is deliberately not referenced, see § 2.1.1 Enumerations as DOMString types.
Note: AuthenticatorAttachment 列挙子は意図的に参照されていない。§ 2.1.1 Enumerations as DOMString types を参照すること。
platform
This value indicates platform attachment.
platform attachment を指定する値。
cross-platform
cross-platform を指定する値。
Note: An authenticator attachment modality selection option is available only in the [[Create]](origin, options, sameOriginWithAncestors) operation. The Relying Party may use it to, for example, ensure the user has a roaming credential for authenticating on another client device; or to specifically register a platform credential for easier reauthentication using a particular client device. The [[DiscoverFromExternalSource]](origin, options, sameOriginWithAncestors) operation has no authenticator attachment modality selection option, so the Relying Party SHOULD accept any of the user’s registered credentials. The client and user will then use whichever is available and convenient at the time.
Note: authenticator attachment modality 選択オプションは、[[Create]](origin, options, sameOriginWithAncestors) においてのみ利用可能である。Relying Party はこれを利用して、例えば、他のクライアントデバイス 上で認証するための roaming credential をユーザーが保持していることを担保したり、特定のクライアントデバイスを使った再認証を簡単にするための platform credential の特別な登録のためにこれを利用できる。[[DiscoverFromExternalSource]](origin, options, sameOriginWithAncestors) は、authenticator attachment modality 選択オプションを持たないので、Relying Party はユーザーが登録済みのどのようなクレデンシャルでも受け入れるべきである。クライアントとユーザーは、その際に利用可能、利用しやすいものを使うことになる。
enum ResidentKeyRequirement {
"discouraged",
"preferred",
"required"
};
Note: The ResidentKeyRequirement enumeration is deliberately not referenced, see § 2.1.1 Enumerations as DOMString types.
Note: ResidentKeyRequirement 列挙子は意図的に参照されていない。§ 2.1.1 Enumerations as DOMString types を参照すること。
This enumeration’s values describe the Relying Party's requirements for client-side discoverable credentials (formerly known as resident credentials or resident keys):
この列挙された値は Relying Party の client-side discoverable credentials(かつては resident credentials や resident keys として知られた) に関する要求を説明する。
discouraged
The Relying Party prefers creating a server-side credential, but will accept a client-side discoverable credential. The client and authenticator SHOULD create a server-side credential if possible.
Relying Party は、server-side credential の作成を望むが、client-side discoverable credential も受け入れる。クライアント と 認証器 は、可能なら server-side credential を作成すべきである。
Note: A Relying Party cannot require that a created credential is a server-side credential and the Credential Properties Extension may not return a value for the rk property. Because of this, it may be the case that it does not know if a credential is a server-side credential or not and thus does not know whether creating a second credential with the same user handle will evict the first.
Note: Relying Party は作成されたクレデンシャルが server-side credential であることを要求できず、Credential Properties Extension は rk プロパティのための値を返さないことがある。このため、クレデンシャルが server-side credential であるかどうかわからず、同じユーザーハンドルで 2 番目に作成されたクレデンシャルが、最初のものを追い出してしまう場合がある。
preferred
The Relying Party strongly prefers creating a client-side discoverable credential, but will accept a server-side credential. The client and authenticator SHOULD create a discoverable credential if possible. For example, the client SHOULD guide the user through setting up user verification if needed to create a discoverable credential. This takes precedence over the setting of userVerification.
Relying Party が、client-side discoverable credential の作成を強く望むが、server-side credential も受け入れる。クライアントと認証器は可能であれば discoverable credential を作成すべきである。例えばもし discoverable credential の作成に必要とされるなら、クライアントは user verification の設定を通じてユーザーをガイドすべきである。これは userVerification の設定よりも優先される。
required
The Relying Party requires a client-side discoverable credential. The client MUST return an error if a client-side discoverable credential cannot be created.
Relying Party は client-side discoverable credential を要求する。クライアント は、もし client-side discoverable が作成できない場合、エラーを返さなければならない。
Note: The Relying Party can seek information on whether or not the authenticator created a client-side discoverable credential using the resident key credential property of the Credential Properties Extension. This is useful when values of discouraged or preferred are used for options.authenticatorSelection.residentKey, because in those cases it is possible for an authenticator to create either a client-side discoverable credential or a server-side credential.
Note: Relying Party は Credential Properties Extension の resident key credential property を使って認証器が client-side discoverable credential を作成したかどうかの情報を探すことができる。これは options.authenticatorSelection.residentKey で discouraged か preferred が使われた場合に有効である。なぜならこの場合、認証器が client-side discoverable credential を作成した場合も server-side credential を作成した場合もありえるからである。
WebAuthn Relying Parties may use AttestationConveyancePreference to specify their preference regarding attestation conveyance during credential generation.
WebAuthn Relying Party はクレデンシャル生成中の attestation conveyance に関する優先順位を指定するため AttestationConveyancePreference を利用できる。
enum AttestationConveyancePreference {
"none",
"indirect",
"direct",
"enterprise"
};
Note: The AttestationConveyancePreference enumeration is deliberately not referenced, see § 2.1.1 Enumerations as DOMString types.
Note: AttestationConveyancePreference 列挙子は意図的に参照されていない。§ 2.1.1 Enumerations as DOMString types を参照すること。
none
The Relying Party is not interested in authenticator attestation. For example, in order to potentially avoid having to obtain user consent to relay identifying information to the Relying Party, or to save a roundtrip to an Attestation CA or Anonymization CA. If the authenticator generates an attestation statement that is not a self attestation, the client will replace it with a None attestation statement.
Relying Party は認証器のアテステーションに関心がない。例えば、 Relying Party に識別情報を伝えるのに user consent を得るのを避けたり、Attestation CA や Anonymization CA とのやり取りを省くことを目的とする。もし認証器 がself attestation ではないアテステーションステートメント を生成した場合、クライアントは None アテステーションステートメントと入れ替える。
This is the default, and unknown values fall back to the behavior of this value.
これはデフォルトであり、不明な値はこの値の振る舞いとしてフォールバックされる。
indirect
The Relying Party wants to receive a verifiable attestation statement, but allows the client to decide how to obtain such an attestation statement. The client MAY replace an authenticator-generated attestation statement with one generated by an Anonymization CA, in order to protect the user’s privacy, or to assist Relying Parties with attestation verification in a heterogeneous ecosystem.
Relying Party は 検証可能な アテステーションステートメント を受け取りたいが、どのようにそのようなアテステーションステートメントを得るかはクライアントが決定して良い。クライアントはユーザーのプライバシーを保護するため、またヘテロジニアスなエコシステムでのアテステーションの検証で Relying Party をアシストするため、認証器が生成したアテステーションステートメントを Anonymization CA が生成したものと入れ替えても良い。
Note: There is no guarantee that the Relying Party will obtain a verifiable attestation statement in this case. For example, in the case that the authenticator employs self attestation and the client passes the attestation statement through unmodified.
Note: この場合、Relying Party が検証可能なアテステーションステートメントを得るという保証はない。例えば、認証器が self attestation を採用し、クライアントが変更なしで アテステーションステートメントを渡した場合である。
direct
The Relying Party wants to receive the attestation statement as generated by the authenticator.
Relying Party は認証器によって生成された[アテステーションステートメント]https://w3c.github.io/webauthn/#attestation-statement)を受け取りたい。
enterprise
The Relying Party wants to receive an attestation statement that may include uniquely identifying information. This is intended for controlled deployments within an enterprise where the organization wishes to tie registrations to specific authenticators. User agents MUST NOT provide such an attestation unless the user agent or authenticator configuration permits it for the requested RP ID.
Relying Party はユニークに識別できる情報を含んだアテステーションステートメントを受け取りたい。これは登録を特定の認証器に縛りたい組織が、企業内の配置をコントロールすることを意図している。ユーザーエージェントはユーザーエージェントもしくは認証器の設定が、要求された RP ID に許可を出さない限り、そのようなアテステーションを提供してはいけない。
もし許可されたら、ユーザーエージェントは invocation のタイミング で enterprise アテステーションが要求された認証器にシグナルを出し、AAGUID と アテステーションステートメント を変更せずに Relying Party に伝達すべきである。
The PublicKeyCredentialRequestOptions dictionary supplies get() with the data it needs to generate an assertion. Its challenge member MUST be present, while its other members are OPTIONAL.
PublicKeyCredentialRequestOptions ディクショナリーは get() でアサーションの生成に必要なデータを提供する。challenge メンバーは必須であり、他のメンバーは任意である。
dictionary PublicKeyCredentialRequestOptions {
required BufferSource challenge;
unsigned long timeout;
USVString rpId;
sequence<PublicKeyCredentialDescriptor> allowCredentials = [];
DOMString userVerification = "preferred";
AuthenticationExtensionsClientInputs extensions;
};
challenge, of type BufferSource
This member specifies a challenge that the authenticator signs, along with other data, when producing an authentication assertion. See the § 13.4.3 Cryptographic Challenges security consideration.
このメンバーは新しく作成されたクレデンシャルのための認証アサーションの生成時に、他のデータとともに認証器が署名するチャレンジを指定する。§ 13.4.3 Cryptographic Challenges セキュリティ考慮事項を参照すること。
timeout, of type unsigned long
This OPTIONAL member specifies a time, in milliseconds, that the Relying Party is willing to wait for the call to complete. This is treated as a hint, and MAY be overridden by the client.
この任意メンバーは、Relying Party が呼び出しの完了を待機する時間をミリ秒で指定する。これはヒントとして扱われ、クライアントによって上書きされうる。
rpId, of type USVString
This OPTIONAL member specifies the RP ID claimed by the Relying Party. The client MUST verify that the Relying Party's origin matches the scope of this RP ID. The authenticator MUST verify that this RP ID exactly equals the rpId of the credential to be used for the authentication ceremony.
この任意のメンバーは Relying Party によって主張される RP ID を指定する。クライアントは Relying Party の origin が RP ID のスコープ とマッチすることを検証する。認証器は RP ID が 認証セレモニー で利用されたクレデンシャル の rpId と完全一致することを検証しなければならない。
If not specified, its value will be the CredentialsContainer object’s relevant settings object's origin's effective domain.
指定されなかった場合、CredentialsContainer オブジェクトの関連する設定オブジェクトの origin の有効ドメインとなる。
allowCredentials, of type sequence<PublicKeyCredentialDescriptor>, defaulting to []
This OPTIONAL member is used by the client to find authenticators eligible for this authentication ceremony. It can be used in two ways:
この任意のメンバーはクライアントがこの認証セレモニーに適格な認証機を探すのに利用される。これは 2 つの方法で利用される。
If the user account to authenticate is already identified (e.g., if the user has entered a username), then the Relying Party SHOULD use this member to list the credentials registered to the user account. This SHOULD usually include all of the user account’s credentials.
The items SHOULD specify transports whenever possible. This helps the client optimize the user experience for any given situation. Also note that the Relying Party does not need to filter the list when requesting user verification — the client will automatically ignore non-eligible credentials if userVerification is set to required.
See also the § 14.6.3 Privacy leak via credential IDs privacy consideration.
- もし認証するユーザーアカウント が識別済みの場合(例えばユーザーが username を入力した)、Relying Party はこのメンバーにユーザーアカウントに登録済みのクレデンシャルのリストを指定する。これは通常ユーザーアカウントのすべてのクレデンシャルを含むべきである。この項目はできる限り transports を含むべきである。これはクライアントが置かれた状況でのユーザー体験を最適化するのを助ける。Relying Party は user verification を要求する際に、このリストをフィルターする必要がないことに気をつけること。クライアントは userVerification に required が指定された場合、自動的に適格でないクレデンシャルを無視する。プライバシー考慮事項 [§ 14.6.3 Privacy leak via credential IDs] も参照すること。
If the user account to authenticate is not already identified, then the Relying Party MAY leave this member empty or unspecified. In this case, only discoverable credentials will be utilized in this authentication ceremony, and the user account MAY be identified by the userHandle of the resulting AuthenticatorAssertionResponse. If the available authenticators contain more than one discoverable credential scoped to the Relying Party, the credentials are displayed by the client platform or authenticator for the user to select from (see step 7 of § 6.3.3 The authenticatorGetAssertion Operation).
もし認証されるユーザーアカウントが識別されていなかったら、Relying Party はこの項目を 空 もしくは未指定とするだろう。この場合、discoverable credentials だけがこの認証セレモニーで利用され、ユーザーアカウントは AuthenticatorAssertionResponse の結果の userHandle によって識別される。もし利用可能な認証器が Relying Party に スコープされた 1 つ以上の discoverable credential を含む場合、ユーザーが選択するためにクレデンシャルはクライアントプラットフォームもしくは認証器によって表示される。(§ 6.3.3 The authenticatorGetAssertion Operation のステップ 7 も参照すること)
If not empty, the client MUST return an error if none of the listed credentials can be used.
空でない場合、クライアントはリストされたクレデンシャルで利用可能なものがなければエラーを返さなければならない。
The list is ordered in descending order of preference: the first item in the list is the most preferred credential, and the last is the least preferred.
このリストは優先度の降順で並んでいる。リストの最初の要素は最優先のクレデンシャルで、最後のものは最も優先されない。
userVerification, of type DOMString, defaulting to "preferred"
This OPTIONAL member specifies the Relying Party's requirements regarding user verification for the get() operation. The value SHOULD be a member of UserVerificationRequirement but client platforms MUST ignore unknown values, treating an unknown value as if the member does not exist. Eligible authenticators are filtered to only those capable of satisfying this requirement.
この任意のメンバーは get() における user verification に関する Relying Party 要求を指定する。この値は UserVerificationRequirement のメンバーであるべきであり、クライアントプラットフォームは不明な値を無視し、不明な値を存在しないかのように振る舞う必要がある。適格な認証器はこの要求を満たす能力を持ったものだけにフィルタリングされる。
See UserVerificationRequirement for the description of userVerification's values and semantics.
userVerification の値とセマンティクスについてはUserVerificationRequirement を参照すること。
extensions, of type AuthenticationExtensionsClientInputs
The Relying Party MAY use this OPTIONAL member to provide client extension inputs requesting additional processing by the client and authenticator.
Relying Party はこの任意のメンバーをクライアントと認証器に追加の処理を要求するクライアント拡張入力を提示するのに利用してもよい。
The extensions framework is defined in § 9 WebAuthn Extensions. Some extensions are defined in § 10 Defined Extensions; consult the IANA "WebAuthn Extension Identifiers" registry [IANA-WebAuthn-Registries] established by [RFC8809] for an up-to-date list of registered WebAuthn Extensions.
拡張フレームワークは § 9 WebAuthn Extensions で定義される。いくつかの拡張は § 10 Defined Extensions で定義される。登録済みの WebAuthn 拡張の最新のリストは、[RFC8809] で規定された IANA "WebAuthn Extension Identifiers" [IANA-WebAuthn-Registries] レジストリを参照すること。
The public key credential type uses certain data structures that are specified in supporting specifications. These are as follows.
public key credential タイプはサポートする仕様で指定される特定のデータ構造を利用する。それらは以下のとおりである。
The client data represents the contextual bindings of both the WebAuthn Relying Party and the client. It is a key-value mapping whose keys are strings. Values can be any type that has a valid encoding in JSON. Its structure is defined by the following Web IDL.
client data は、WebAuthn Relying Party とクライアント のコンテキストバインディングを表す。これは key-value のマッピングであり、キーは文字列である。値は JSON で有効なエンコーディングを持つ任意の型である。構造は以下の Web IDL で定義されている。
Note: The CollectedClientData may be extended in the future. Therefore it’s critical when parsing to be tolerant of unknown keys and of any reordering of the keys. See also § 5.8.1.2 Limited Verification Algorithm.
Note: CollectedClientData は将来拡張されるかもしれない。そのため、パース時に未知のキーやキーの並べ替えに寛容であることが重要である。§ 5.8.1.2 Limited Verification Algorithm も参照すること。
dictionary CollectedClientData {
required DOMString type;
required DOMString challenge;
required DOMString origin;
boolean crossOrigin;
};
dictionary TokenBinding {
required DOMString status;
DOMString id;
};
enum TokenBindingStatus { "present", "supported" };
type, of type DOMString
This member contains the string "webauthn.create" when creating new credentials, and "webauthn.get" when getting an assertion from an existing credential. The purpose of this member is to prevent certain types of signature confusion attacks (where an attacker substitutes one legitimate signature for another).
このメンバーは新しいクレデンシャルの作成時には "webauthn.create"、既存のクレデンシャルからアサーションを取得する場合は "webauthn.get" を含む。このメンバーの目的は特定のタイプの署名混合攻撃(攻撃者が正当な署名を他のものと入れ替える)を防ぐことである。
challenge, of type DOMString
This member contains the base64url encoding of the challenge provided by the Relying Party. See the § 13.4.3 Cryptographic Challenges security consideration.
このメンバーは Relying Party に渡されたチャレンジの base64url エンコーディングを含む。§ 13.4.3 Cryptographic Challenges を参照すること。
origin, of type DOMString
This member contains the fully qualified origin of the requester, as provided to the authenticator by the client, in the syntax defined by [RFC6454].
このメンバーはクライアントが認証器に提供した、[RFC6454] で定義されたシンタックスの要求者の完全修飾オリジンを含む。
crossOrigin, of type boolean
This OPTIONAL member contains the inverse of the sameOriginWithAncestors argument value that was passed into the internal method.
この任意のメンバーは内部メソッドに渡された sameOriginWithAncestors 引数の逆を含む。
[RESERVED] tokenBinding
This OPTIONAL member contains information about the state of the Token Binding protocol [TokenBinding] used when communicating with the Relying Party. Its absence indicates that the client doesn’t support token binding
この任意のメンバーは [Relying Party] とやり取りするときに使われる Token Binding プロトコル [TokenBinding] の状態についての情報を含む。メンバーが存在しない場合、クライアントが Token Binding をサポートしていないことを意味する。
Note: While Token Binding was present in Level 1 and Level 2 of WebAuthn, its use is not expected in Level 3. The tokenBinding field is reserved so that it will not be reused for a different purpose.
Note: Token Binding は Level 1 と Level 2 の WebAuthn で存在したが、Level 3 では利用を想定していない。tokenBinding フィールドは、異なる目的で再利用されないように予約されている。
status, of type DOMString
This member SHOULD be a member of TokenBindingStatus but client platforms MUST ignore unknown values, treating an unknown value as if the tokenBinding member does not exist. When known, this member is one of the following:
このメンバーは TokenBindingStatus のメンバーであるべきであり、不明な値を無視しなければならず、不明な tokenBindingを存在しないメンバーかのように扱わなければならない。既知の場合、このメンバーは以下のいずれかである。
supported
Indicates the client supports token binding, but it was not negotiated when communicating with the Relying Party.
クライアントが Token Binding をサポートしているが、Relying Party とのやり取り時にネゴシエートされていないことを意味する。
present
Indicates token binding was used when communicating with the Relying Party. In this case, the id member MUST be present.
Relying Party とのやり取り時に Token Binding が利用されたことを意味する。この場合、id メンバーが提示されなければならない。
Note: The TokenBindingStatus enumeration is deliberately not referenced, see § 2.1.1 Enumerations as DOMString types.
Note: TokenBindingStatus 列挙子は意図的に参照されていない。§ 2.1.1 Enumerations as DOMString types を参照すること。
id, of type DOMString
This member MUST be present if status is present, and MUST be a base64url encoding of the Token Binding ID that was used when communicating with the Relying Party.
status が present であればこのメンバーは提示されなければならず、Relying Party とのやり取り時に利用された Token Binding ID の base64url エンコーディングでなければならない。
Note: Obtaining a Token Binding ID is a client platform-specific operation.
Note: Token Binding ID の取得は、クライアントプラットフォーム固有の操作である。
The CollectedClientData structure is used by the client to compute the following quantities:
CollectedClientData 構造は、以下の値を計算することでクライアントによって利用される。
JSON-compatible serialization of client data
This is the result of performing the JSON-compatible serialization algorithm on the CollectedClientData dictionary.
これは CollectedClientData に JSON 互換シリアライゼーションアルゴリズムを行った結果である。
Hash of the serialized client data
This is the hash (computed using SHA-256) of the JSON-compatible serialization of client data, as constructed by the client.
これはクライアントによって構築された、クライアントデータの JSON 互換シリアライゼーションの SHA-256 で計算されたハッシュである。
The serialization of the CollectedClientData is a subset of the algorithm for JSON-serializing to bytes. I.e. it produces a valid JSON encoding of the CollectedClientData but also provides additional structure that may be exploited by verifiers to avoid integrating a full JSON parser. While verifiers are recommended to perform standard JSON parsing, they may use the more limited algorithm below in contexts where a full JSON parser is too large. This verification algorithm requires only base64url encoding, appending of bytestrings (which could be implemented by writing into a fixed template), and three conditional checks (assuming that inputs are known not to need escaping).
CollectedClientData のシリアライゼーションは JSON-serializing to bytes のためのアルゴリズムのサブセットである。つまり CollectedClientData の有効な JSON エンコーディングを生成するが、検証者が完全な JSON パーサーの統合を避けるのに利用される追加の構造も提供される。検証者は標準の JSON パースを行うことが推奨されるが、完全な JSON パーサーが大きすぎるようなコンテキスト下ではさらに限定的なアルゴリズムも使うことができるだろう。この検証アルゴリズムは base64 エンコーディング、バイト列の追加(固定テンプレートへの書き出しによって実装できる)、 3 つの状態チェック(入力へのエスケープが不要であるとわかっている想定)だけを必要する。
The serialization algorithm works by appending successive byte strings to an, initially empty, partial result until the complete result is obtained.
このシリアライゼーションアルゴリズムは、完全な結果が得られるまで初期は空の部分的な結果に連続的なバイト文字列を追加することによって動作する。
- Let result be an empty byte string.
- Append 0x7b2274797065223a ({"type":) to result.
- Append CCDToString(type) to result.
- Append 0x2c226368616c6c656e6765223a (,"challenge":) to result.
- Append CCDToString(challenge) to result.
- Append 0x2c226f726967696e223a (,"origin":) to result.
- Append CCDToString(origin) to result.
- Append 0x2c2263726f73734f726967696e223a (,"crossOrigin":) to result.
- If crossOrigin is not present, or is false:
- Append 0x66616c7365 (false) to result.
- Otherwise:
- Append 0x74727565 (true) to result.
- Create a temporary copy of the CollectedClientData and remove the fields type, challenge, origin, and crossOrigin (if present).
- If no fields remain in the temporary copy then:
- Append 0x7d (}) to result.
- Otherwise:
- Invoke serialize JSON to bytes on the temporary copy to produce a byte string remainder.
- Append 0x2c (,) to result.
- Remove the leading byte from remainder.
- Append remainder to result. 14. The result of the serialization is the value of result.
- result に空の文字列を代入する。
- result に 0x7b2274797065223a ({"type":) を追加する。
- result に CCDToString(type) を追加する。
- result に 0x2c226368616c6c656e6765223a (,"challenge":) を追加する。
- result に CCDToString(challenge) を追加する。
- result に 0x2c226f726967696e223a (,"origin":) を追加する。
- result に CCDToString(origin) を追加する。
- result に 0x2c2263726f73734f726967696e223a (,"crossOrigin":) を追加する。
- もし clossOrigin が提示されない場合、もしくは false の場合
- result に 0x66616c7365 (false) を追加する。
- さもなくば
- result に 0x74727565 (true) を追加する。
- CollectedClientData の一時的なコピーを作成し、type、challenge、origin と crossOrigin フィールドを削除する。(もし存在すれば)
- 一時的なコピーにフィールドが残っていなければ、
- result に 0x7d (}) を追加する
- さもなくば
- reminder バイト文字列を生成するため、一時的なコピーに serialize JSON to bytes を呼び出す。
- result に x2c (,) を追加する。
- reminder の先頭バイトを削除する。
- reminder を result に追加する。
- result の値をシリアライゼーションの結果とする。
The function CCDToString is used in the above algorithm and is defined as:
上記アルゴリズムで使われている CCDToString は、このように定義される。
- Let encoded be an empty byte string.
- Append 0x22 (") to encoded.
- Invoke ToString on the given object to convert to a string.
- For each code point in the resulting string, if the code point: ↪ is in the set {U+0020, U+0021, U+0023–U+005B, U+005D–U+10FFFF} Append the UTF-8 encoding of that code point to encoded. ↪ is U+0022 Append 0x5c22 (") to encoded. ↪ is U+005C Append 0x5c5c (\) to encoded. ↪ otherwise Append 0x5c75 (\u) to encoded, followed by four, lower-case hex digits that, when interpreted as a base-16 number, represent that code point.
- Append 0x22 (") to encoded.
- The result of this function is the value of encoded.
- encoded に空のバイト文字列を代入する。
- encoded に 0x22 (") を追加する。
- 与えられたオブジェクトを文字列に変換するため ToString を呼び出す。
- 結果の文字列の各コードポイントに対して、もしコードポイントが
- ↪ {U+0020, U+0021, U+0023–U+005B, U+005D–U+10FFFF} のいずれかだったら
- encoded にコードポイントの UTF-8 エンコードを追加する。
- ↪ U+0022 だったら
- encoded に 0x5c22 (") を追加する。
- ↪ U+005C だったら
- encoded に 0x5c5c (\) を追加する。
- ↪ さもなくば
- encoded に 0x5c75 (\u) を追加し、その後に 4 つの小文字 16 進数を続ける。基数 16 として解釈された場合、コードポイントを表す。
- ↪ {U+0020, U+0021, U+0023–U+005B, U+005D–U+10FFFF} のいずれかだったら
- encoded に 0x22 (") を追加する。
- encoded の値をこの関数の結果とする。
Verifiers may use the following algorithm to verify an encoded CollectedClientData if they cannot support a full JSON parser:
もし完全な JSON パーサーをサポートしていない場合、検証者は以下のアルゴリズムをエンコードされた CollectedClientData の検証に利用できるであろう。
- The inputs to the algorithm are:
- A bytestring, clientDataJSON, that contains clientDataJSON — the serialized CollectedClientData that is to be verified.
- A string, type, that contains the expected type.
- A byte string, challenge, that contains the challenge byte string that was given in the PublicKeyCredentialRequestOptions or PublicKeyCredentialCreationOptions.
- A string, origin, that contains the expected origin that issued the request to the user agent.
- A boolean, crossOrigin, that is true if, and only if, the request should have been performed within a cross-origin <iframe>.
- Let expected be an empty byte string.
- Append 0x7b2274797065223a ({"type":) to expected.
- Append CCDToString(type) to expected.
- Append 0x2c226368616c6c656e6765223a (,"challenge":) to expected.
- Perform base64url encoding on challenge to produce a string, challengeBase64.
- Append CCDToString(challengeBase64) to expected.
- Append 0x2c226f726967696e223a (,"origin":) to expected.
- Append CCDToString(origin) to expected.
- Append 0x2c2263726f73734f726967696e223a (,"crossOrigin":) to expected.
- If crossOrigin is true:
- Append 0x74727565 (true) to expected.
- otherwise, i.e. crossOrigin is false:
- Append 0x66616c7365 (false) to expected.
- If expected is not a prefix of clientDataJSON then the verification has failed.
- If clientDataJSON is not at least one byte longer than expected then the verification has failed.
- If the byte of clientDataJSON at the offset equal to the length of expected: ↪ is 0x7d The verification is successful. ↪ is 0x2c The verification is successful. ↪ otherwise The verification has failed.
- このアルゴリズムへの入力は、
- バイト文字列の clientDataJSON。これは検証されるシリアライズされた CollectedClientData である clientDataJSON を含む。
- 文字列の type。これは想定している type を含む。
- バイト文字列の challenge。これは PublicKeyCredentialRequestOptions か PublicKeyCredentialCreationOptions で与えられたバイト文字列のチャレンジを含む。
- 文字列の origin。これはユーザーエージェントにリクエストを発行した予期される origin を含む。
- boolean の clossOrigin。これはもしリクエストがクロスオリジンの <iframe> 内で実行されるべきであった場合のみ、true になる。
- expected に空のバイト文字列を代入する。
- expected に 0x7b2274797065223a ({"type":) を追加する。
- expected に CCDToString(type) を追加する。
- expected に 0x2c226368616c6c656e6765223a (,"challenge":) を追加する。
- challengeBase64 文字列を生成するため、challenge に base64url エンコーディングを行う。
- expected に CCDToString(challengeBase64) を追加する。
- expected に 0x2c226f726967696e223a (,"origin":) を追加する。
- expected に CCDToString(origin) を追加する。
- expected に 0x2c2263726f73734f726967696e223a (,"crossOrigin":) を追加する。
- もし crossOrigin が true なら
- expected に 0x74727565 (true) を追加する。
- さもなくば(つまり crossOrigin が false なら)
- expected に 0x66616c7365 (true) を追加する。
- もし expected が clientDataJSON のプレフィックスでなければ、検証は失敗とする。
- clientDataJSON が少なくとも expected より 1 バイト以上大きくない場合、検証は失敗とする。
- もし expected の長さと等しいオフセットの clientDataJSON のバイトが
- ↪ 0x7d の場合
- 検証は成功とする。
- ↪ 0x2c の場合
- 検証は成功とする。
- ↪ さもなくば
- 検証は失敗とする。
- ↪ 0x7d の場合
limited verification algorithm との互換性を残すため、今後の本仕様のバージョンでは CollectedClientData から type、challenge、origin、crossOrigin を削除してはならない。また、シリアライズされるフィールドの順序を変更するようなシリアライゼーションアルゴリズム の変更を行ってもいけない。
If additional fields are added to CollectedClientData then verifiers that employ the limited verification algorithm will not be able to consider them until the two algorithms above are updated to include them. Once such an update occurs then the added fields inherit the same limitations as described in the previous paragraph. Such an algorithm update would have to accomodate serializations produced by previous versions. I.e. the verification algorithm would have to handle the fact that a fifth key–value pair may not appear fifth (or at all) if generated by a user agent working from a previous version.
CollectedClientData に追加のフィールドが追加された場合、limited verification algorithm を採用している検証者は上記 2 つのアルゴリズムがそれらのフィールドを含むようアップデートされるまで、そのフィールドを考慮できないだろう。そのようなアップデートが発生したら追加されたフィールドは同じ、前のパラグラフで説明されたように制限を継承する。そのようなアルゴリズムのアップデートは以前のバージョンで生成されたシリアライゼーションに適用しなければならないだろう。つまり、検証アルゴリズムはもし以前のバージョンで動いているユーザーエージェントによって生成されたら、5 番目の key-value のペアが 5 番目に(もしくはまったく)現れないかもしれないという事実に対応する必要があるだろう。
enum PublicKeyCredentialType {
"public-key"
};
Note: The PublicKeyCredentialType enumeration is deliberately not referenced, see § 2.1.1 Enumerations as DOMString types.
Note: PublicKeyCredentialType 列挙子は意図的に参照されていない。§ 2.1.1 Enumerations as DOMString types を参照すること。
This enumeration defines the valid credential types. It is an extension point; values can be added to it in the future, as more credential types are defined. The values of this enumeration are used for versioning the Authentication Assertion and attestation structures according to the type of the authenticator.
この列挙子は有効なクレデンシャルのタイプを定義する。これは拡張ポイントであり、値は今後さらなるクレデンシャルのタイプが定義された時に追加可能である。この列挙子の値は認証器のタイプに対する認証アサーションとアテステーション構造のバージョニングに使われる。
Currently one credential type is defined, namely "public-key".
現時点では 1 つのクレデンシャルタイプが定義されており、それは "public-key" である。
dictionary PublicKeyCredentialDescriptor {
required DOMString type;
required BufferSource id;
sequence<DOMString> transports;
};
This dictionary identifies a specific public key credential. It is used in create() to prevent creating duplicate credentials on the same authenticator, and in get() to determine if and how the credential can currently be reached by the client. It mirrors some fields of the PublicKeyCredential object returned by create() and get().
このディクショナリーは特定の公開鍵クレデンシャルを識別する。これは create() において同じ認証器で重複したクレデンシャルの生成を防ぎ、get() においてはクライアントが現時点でクレデンシャルにどのようにアクセスできるか、アクセス可能かを判断するのに使われる。これは create() や get() で返される PublicKeyCredential オブジェクトのいくつかのフィールドをミラーしている。
type, of type DOMString
This member contains the type of the public key credential the caller is referring to. The value SHOULD be a member of PublicKeyCredentialType but client platforms MUST ignore any PublicKeyCredentialDescriptor with an unknown type.
このメンバーは呼び出し元が参照している公開鍵クレデンシャルのタイプを含む。この値は PublicKeyCredentialType のメンバーであるべきであり、クライアントプラットフォームは PublicKeyCredentialDescriptor の不明な type を無視し、不明な値を存在しないかのように振る舞う必要がある。
This mirrors the type field of PublicKeyCredential.
これは PublicKeyCredential の type フィールドのミラーである。
id, of type BufferSource
This member contains the credential ID of the public key credential the caller is referring to.
このメンバーは呼び出し元が参照している公開鍵クレデンシャル の credential ID を含む。
This mirrors the rawId field of PublicKeyCredential.
これは PublicKeyCredential のフィールド rawId のミラーである。
transports, of type sequence<DOMString>
This OPTIONAL member contains a hint as to how the client might communicate with the managing authenticator of the public key credential the caller is referring to. The values SHOULD be members of AuthenticatorTransport but client platforms MUST ignore unknown values.
この任意のメンバーは呼び出し元が参照している公開鍵クレデンシャルの管理された認証器とどのようにクライアントがやりとりできるかのヒントを含む。この値は AuthenticatorTransport のメンバーであるべきであり、クライアントプラットフォーム は不明な値を無視する必要がある。
This mirrors the response.getTransports() method of a PublicKeyCredential structure created by a create() operation. When registering a new credential, the Relying Party SHOULD store the value returned from getTransports(). When creating a PublicKeyCredentialDescriptor for that credential, the Relying Party SHOULD retrieve that stored value and set it as the value of the transports member.
これは create() で作成された PublicKeyCredential 構造の response.getTransports() メソッドのミラーである。新しいクレデンシャルの登録時に Relying Party は getTransports() から返される値を保存すべきである。クレデンシャルの PublicKeyCredentialDescriptor を作成する時に、Relying Party は保存された値を取得し、transports メンバーの値にそれをセットすべきである。
enum AuthenticatorTransport {
"usb",
"nfc",
"ble",
"internal"
};
Note: The AuthenticatorTransport enumeration is deliberately not referenced, see § 2.1.1 Enumerations as DOMString types.
Note: AuthenticatorTransport 列挙子は意図的に参照されていない。§ 2.1.1 Enumerations as DOMString types を参照すること。
Authenticators may implement various transports for communicating with clients. This enumeration defines hints as to how clients might communicate with a particular authenticator in order to obtain an assertion for a specific credential. Note that these hints represent the WebAuthn Relying Party's best belief as to how an authenticator may be reached. A Relying Party will typically learn of the supported transports for a public key credential via getTransports().
認証器はクライアントとやり取りするためにいくつかの transports を実装し得る。この列挙子はどのようにクライアントが特定のクレデンシャルのためのアサーションを得るために特定の認証器とやり取りするかのヒントを定義する。これらのヒントは WebAuthn Relying Party が最も信じている、認証器への到達方法を表現している。Relying Party は一般的に getTransports() 経由で公開鍵クレデンシャルのためにサポートされている transports を学ぶだろう。
usb
Indicates the respective authenticator can be contacted over removable USB.
認証器 が取外し可能な USB 越しに接続されることを表す。
nfc
Indicates the respective authenticator can be contacted over Near Field Communication (NFC).
認証器 が NFC 越しに接続されることを表す。
ble
Indicates the respective authenticator can be contacted over Bluetooth Smart (Bluetooth Low Energy / BLE).
認証器 が Bluetooth Smart(BLE) 越しに接続されることを表す。
internal
Indicates the respective authenticator is contacted using a client device-specific transport, i.e., it is a platform authenticator. These authenticators are not removable from the client device.
認証器 がクライアントデバイス固有のトランスポートを使って接続されることを表す。つまり、これはプラットフォーム認証である。これらの認証器はクライアントデバイスから取り外せない。
typedef long COSEAlgorithmIdentifier;
A COSEAlgorithmIdentifier's value is a number identifying a cryptographic algorithm. The algorithm identifiers SHOULD be values registered in the IANA COSE Algorithms registry [IANA-COSE-ALGS-REG], for instance, -7 for "ES256" and -257 for "RS256".
COSEAlgorithmIdentifier の値は暗号アルゴリズムを識別する数値である。アルゴリズムの識別子は IANA COSE アルゴリズムレジストリー [[IANA-COSE-ALGS-REG]] に登録された値であるべきであり、例えば -7 は "ES256"、-257 は "RS256" である。
The COSE algorithms registry leaves degrees of freedom to be specified by other parameters in a COSE key. In order to promote interoperability, this specification makes the following additional guarantees of credential public keys:
COSE アルゴリズムレジストリーは COSE key における他のパラメーターによって指定される自由度が残っている。相互運用性を高めるため、この仕様はクレデンシャル公開鍵の以下の追加の保証をしている。
- Keys with algorithm ES256 (-7) MUST specify P-256 (1) as the crv parameter and MUST NOT use the compressed point form.
- Keys with algorithm ES384 (-35) MUST specify P-384 (2) as the crv parameter and MUST NOT use the compressed point form.
- Keys with algorithm ES512 (-36) MUST specify P-521 (3) as the crv parameter and MUST NOT use the compressed point form.
- Keys with algorithm EdDSA (-8) MUST specify Ed25519 (6) as the crv parameter. (These always use a compressed form in COSE.)
- アルゴリズム ES256(-7) の鍵は、crv パラメーターとして P-256(1) を指定しなければならず、compressed point form を使ってはいけない。
- アルゴリズム ES384(-35) の鍵は、crv パラメーターとして P-384(2) を指定しなければならず、compressed point form を使ってはいけない。
- アルゴリズム ES512(-36) の鍵は、crv パラメーターとして P-521(3) を指定しなければならず、compressed point form を使ってはいけない。
- アルゴリズム EdDSA(-8) の鍵は、crv パラメーターとして Ed25519(6) を指定しなければならない。(これらはいつでも COSE における compressed form を使う)
Note: There are many checks neccessary to correctly implement signature verification using these algorithms. One of these is that, when processing uncompressed elliptic-curve points, implementations should check that the point is actually on the curve. This check is highlighted because it’s judged to be at particular risk of falling through the gap between a cryptographic library and other code.
これらのアルゴリズムを使った署名検証の正しい実装には、たくさんの必要なチェックがある。これらの 1 つは、非圧縮の楕円曲線の点を処理する際、実装は点が正確に曲線状にあることをチェックすべきである。このチェックは暗号ライブラリと他のコードの間のギャップを通じてたリスクがあると判断されたため、特に強調されている。
enum UserVerificationRequirement {
"required",
"preferred",
"discouraged"
};
A WebAuthn Relying Party may require user verification for some of its operations but not for others, and may use this type to express its needs.
WebAuthn Relying Party はいくつかの全てではないオペレーションのために、 user verification を要求し、その要求を表現するためにこの型を必要とする。
Note: The UserVerificationRequirement enumeration is deliberately not referenced, see § 2.1.1 Enumerations as DOMString types.
Note: UserVerificationRequirement 列挙子は意図的に参照されていない。§ 2.1.1 Enumerations as DOMString types を参照すること。
required
The Relying Party requires user verification for the operation and will fail the overall ceremony if the response does not have the UV flag set. The client MUST return an error if user verification cannot be performed.
Relying Party はオペレーションのために user verification を要求し、もしレスポンスの UV flag がセットされていなかったら、セレモニー全体を失敗とする。クライアント は user verification が行われなかったらエラーを返さなければならない。
preferred
The Relying Party prefers user verification for the operation if possible, but will not fail the operation if the response does not have the UV flag set.
Relying Party は可能であればそのオペレーションのために user verification を望むが、レスポンスの UV flag がセットされていなくてもオペレーションを失敗とはしない。
discouraged
The Relying Party does not want user verification employed during the operation (e.g., in the interest of minimizing disruption to the user interaction flow).
Relying Party は user verification の採用を望まない。(例えばユーザーインタラクションの中断を最小限にする、といった観点から)