「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- Web Authentication API (別名 WebAuthn?) は
詳細 †
- W3C で定義されている使用する (主な) API の名前は、
- navigator.credentials.create()メソッド
- navigator.credentials.get()メソッド
- セキュアコンテキスト (https or localhost)であることを必要とし、
ブラウザがセキュアコンテキストで動作していない場合は利用できない。
navigator.credentials.create()メソッド †
- publicKeyオプションと併用する。
- PublicKeyCredentialCreationOptions?: 登録リクエスト作成のオプションを記述する。
- PublicKeyCredential?: 作成された登録リクエストを格納する。
navigator.credentials.get()メソッド †
用語 †
アテステーション(Attestation) †
- 認証器とそれが発行するデータの出所を証明する。
- 資格ID、資格鍵ペア、署名カウンタなどを含む。
- アテステーション証明書
- 認証器が製造と機能を証明するために使用する秘密鍵を含むX.509証明書。
認証(Authentication) †
- 認証式(Authentication Ceremony)
ユーザの存在またはユーザ確認のテスト(式典)
- 認証アサーション(Authentication Assertion)
authenticatorGetAssertion?操作の結果として認証者によって返された、
暗号で署名されたAuthenticatorAssertionResponse?オブジェクト。
認証器(Authenticator) †
認証式に従い、
クライアント †
- クライアント側
以下を接着するすべての組み合わせ。
- クライアント・プラットフォーム
- 認証プロバイダ
- およびすべて
- クライアント・プラットフォーム
- クライアント・デバイス+クライアントの組み合わせ
- 単一のクライアント・デバイスが、異なるクライアントを
実行すると異なるクライアント・プラットフォームとなる。
- (WebAuthn?)クライアント
- ブラウザ実装など。
- ユーザエージェントに(全体的にまたは部分的に)実装された中間的なエンティティ
- クライアント・デバイス
- クライアントが実行されるハードウェア・デバイス
- 認証器は、クライアント・デバイスにバインドされる。
- WebAuthn? Reelying Party
WebアプリケーションがWeb認証APIを使用してユーザを登録および認証するエンティティ。
依存 †
データ †
- Base64url encoding
- Base64ではなくBase64url
- ということは、Base64urlを使用する?
- CBOR
- オブジェクトをバイナリ・シリアライズする使用
- 基礎となるデータモデルは、JSONデータモデル[RFC4627]
- 参考
- CDDL
- CBOR表記規則(CBOR [RFC7049]を表現する表記法)
- JSONデータ構造の記述にも使用できる。
- CDDLの目標
- (G1)CBORデータ構造の全体的な構造の明瞭な記述を提供する。
- (G2)自由度をCBORデータ形式で表現する柔軟性。
- (G3)必要に応じてフォーマットの選択を制限する可能性がある[_形式]。
- (G4)共通のCBORデータ型および構造を表現できること。
- (G5)人と機械が読み書き可能であること。
- (G6)データフォーマット準拠の自動チェック。
- (G7)さらなる処理のためにCBORデータから特定の要素を抽出する。
- COSE
- CBORオブジェクト署名と暗号化(COSE)[RFC8152]。
- 参考
- ArrayBuffer?
- ECMAScriptによって定義されている。
- JavaScriptでバイナリを扱うために生まれた。
- 画像・音声処理などで利用されている。
- 参考
その他 †
- HTML
- DOM
- ECMAScript
- Web IDL: Webブラウザーで実装するためのAPIを記述するためのIDL
- FIDO AppID:
呼び出し元アプリケーションのFacetIDを決定し、呼び出し元のFacetIDが
AppIDに対して許可されているかどうかを判断するアルゴリズムを定義する。
登録(Attestation): navigator.credentials.create()メソッド †
引数:PublicKeyCredentialCreationOptions? †
- 主要な引数
- Challenge
- ランダムな情報の大きなバッファー(例えば100バイト以上)が絶対に重要。
- 登録過程のセキュリティを確保するためにサーバ上で生成する必要がある。
- Attestation Conveyance Preference enumeration
基本的に、登録(Attestation)プロセスは、クライアントによって使用される認証器が、
FIDO2 Server(RP Server)で信頼可能か検証するための多くのステップを費やす。
- "none"(既定値)
ユーザ名/パスワードをFIDO2に切り替える場合。
(FIDO2はパスワードよりも優れていると考える場合)
- "indirect"
スマートカードまたはUAFから移行する場合、
認証器の信頼性をattestation statement から確認する必要がある。
クライアントがattestation statement を取得する方法を決定できる。
- "direct"
スマートカードまたはUAFから移行する場合、
認証器の信頼性をattestation statement から確認する必要がある。
サーバーがattestation statement を必要とすることを示す。
戻り値:PublicKeyCredential? †
厳密には、AuthenticatorAttestationResponse? を含む PublicKeyCredential? に解決する Promiseを返す。
- id(rawId) : GlobalにUniqueなPublicKeyCredential?のID
- type : public-key(このUseCase?では固定)
- AuthenticatorAttestationResponse?のプロパティ
- clientDataJSON
認証器のauthenticatorMakeCredential?()メソッドの戻り値
- type
- challenge
- origin
- tokenBindingId?
- clientExtensions
- authenticatorExtensions
- attestationObject
id(rawId)に対応した、公開鍵と他の認証データ
- fmt:アテステーションステートメントの形式を示すテキスト文字列
("packed"、 "tpm"、 "android-key"、 "android-safetynet"、 "fido-u2f"、"none")
- attStmt:"fmt"で定義された形式のアテステーションステートメント
認証(Assertion): navigator.credentials.get()メソッド †
参考 †
w3c †
webauthn.org †
fido2-net-lib †
MDN - Web APIs †
Credential Management API †
Web Authentication API †
Credential Management API中のPublicKeyCredential?を拡張したもの。
Yubico †
blog.jxck.io †
enjoy struggling †
(株)ソフト技研 †
Qiita †
Tags: :認証基盤