「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
Web Authentication API は
API †
ドラフト実装(makeCredential & getAssertion) †
- 使用する (主な) 関数は 2 つ。
- makeCredential()メソッド
- getAssertion()メソッド
仕様 †
- ドラフト
- 現在はドラフト仕様に基づく ms-prefix実装であるため、
現在 (2016/05 時点) の Edge の実装では、明示的に下記を使用。
- window.msCredentials.makeCredential
- window.msCredentials.getAssertion
メソッド †
- makeCredential()メソッド
初回の key pair の作成
- private key の (Device への) 登録
- public key の取得 (JWK format)
- getAssertion()メソッド
private key を用いた challenge data のデジタル署名
補足 †
- (現時点で)以下に値が入ってこない。
- result.algorithm
- result.attestation
- PKIのキーペアは、CredentialIDを使用して、紐付けを行う模様。
- 従って、CredentialIDには、認証器が生成した値を使用する必要がある。
- なお、CredentialIDを使用すれば、複数のデバイスの登録が可能。
しかし、デバイスを特定する方法が無いので、登録が重複してしまう。
navigator.credentials.create() & get()メソッド †
- W3C で定義されている使用する (主な) API の名前は、
- navigator.credentials.create()メソッド
- navigator.credentials.get()メソッド
- セキュアコンテキスト (https or localhost)であることを必要とし、
ブラウザがセキュアコンテキストで動作していない場合は利用できない。
navigator.credentials.create()メソッド †
- publicKeyオプションと併用する。
- PublicKeyCredentialCreationOptions?: 登録リクエスト作成のオプションを記述する。
- PublicKeyCredential?: 作成された登録リクエストを格納する。
navigator.credentials.get()メソッド †
用語 †
依存 †
登録(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 †
参考(旧) †
ドラフト実装(makeCredential & getAssertion)の頃の参考情報。
しばやん雑記 †
Views †
Controllers †
Services †
microsoft.com †
API リファレンス †
adrianba/fido-snippets †
Qiita †
Tags: :認証基盤