- Web Authentication API
- https://www.w3.org/TR/webauthn/#web-authentication-api
- 細かい実装方針・内容の話
-
基本的なアイディア
- userに紐づくcredentialはauthenticatorによって管理される
- WebAuthnのRPはclient platform(browserだっけ?deviceだっけ?)を介してauthenticatorとやり取りをする
-
registration
- RPはuserの同意のもと、browserにリクエストを行う
- 自分(RP)が認証に用いる新規credentialを生成する
-
registraion flow(https://www.w3.org/TR/webauthn/images/webauthn-registration-flow-01.svg)
- RP Server -> RP Client PublicKeyCredentialCreateOptions
challenge
user info
relying party info
- RP Client -> Browser
- WebAuthnAPI REQUEST
- Browser -> Authenticator
relying party id
user info
relying party info
clientDataHash
- Anthenticator
user verification
new keypair
attestation
- Authenticator -> Browser attestationObject
new public key
credential id
attestation
- Browser -> RP Client
- WebAuthnAPI RESPONSE
- RP Client -> RP Server AuthenticatorAttestationResponse
clientData
attestationObject
- RP Server
- server validation
- RP Server -> RP Client PublicKeyCredentialCreateOptions
-
authentication
- RP(のclient sideに仕込まれた多分java)scriptが、自RP内に既存のcredentialを使用してauthenticationを実行する
- authentication実行のため、RP(略)scriptがuserに許可を求める(?)
-
authentication flow(https://www.w3.org/TR/webauthn/images/webauthn-authentication-flow-01.svg)
- RP Server -> RP Client PublicKeyCredentialCreateOptions
challenge
- RP Client -> Browser
- WebAuthnAPI
- Browser -> Authenticator
relying party id
clientDataHash
- Authenticator
- user verification
- create assertion
- Authenticator -> Browser
authenticatorData
signature
- Browser -> RP Client
- WebAuthnAPI
- RP Client -> RP Server AuthenticatorAssertionResponse
clientDataJSON
authenticatorData
signature
- RP Server
- server validation
- RP Server -> RP Client PublicKeyCredentialCreateOptions
-
registrationとauthenticationはuserの代理となるclient PFによって仲介され、authenticatorの中で行われる
-
RP scriptはcredential自体へのアクセスは行わず、object形式のデータとしてcredentialに関する情報を得るに限られる
-
authenticatorはregistration, authenticationで使用されるIFに加えて、以下のものを提供することがある