Baseline Widely available *
å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
create()
㯠CredentialsContainer
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ãæå®ããããªãã·ã§ã³ã«åºã¥ãæ°ããè³æ ¼æ
å ±ã®ã¤ã³ã¹ã¿ã³ã¹ã«è§£æ±ºãã Promise
ãè¿ãã¾ãããã®ã¤ã³ã¹ã¿ã³ã¹ã®æ
å ±ã¯ä¿åãããã¨ãã§ããå¾ã§ navigator.credentials.get()
ã§ã¦ã¼ã¶ã¼èªè¨¼ã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
ããã¯ã大ããç°ãªãç®çãæã¤ãè¤æ°ã®ç°ãªãè³æ ¼æ å ±é¢é£ API ã§ä½¿ç¨ããã¾ãã
create()
ã使ç¨ãã¦åºæ¬çãªãã§ãã¬ã¼ã·ã§ã³è³æ ¼æ
å ±ã¾ãã¯ã¦ã¼ã¶ã¼å/ãã¹ã¯ã¼ãã®è³æ ¼æ
å ±ã使ãã¾ããcreate()
ã使ç¨ãã¦ï¼é対称æå·ã«åºã¥ãï¼å
¬ééµè³æ ¼æ
å ±ã使ãã¾ããä¸è¨ã®ãªãã¡ã¬ã³ã¹ãã¼ã¸ã§ã¯ãã¾ãæ§æã®ç¯ã§ãç°ãªã API ãã¹ã¦ã«é©ç¨ãããä¸è¬çãªã¡ã½ããå¼ã³åºãæ§é ã¨å¼æ°ã説æãã¦ãã¾ãããã®é¨åã®å¾ã§ãå API ã«åºæã®å¼æ°ãè¿å¤ãä¾ãæä¾ããå¥åã®ç¯ã«åãã¦ãã¾ãã
ã¡ã¢: ãã®ã¡ã½ããã¯æä¸ä½ã®é²è¦§ã³ã³ããã¹ãï¼ããªãã¡ããã©ã¦ã¶ã¼ã¿ãå
ã§ç´æ¥å®è¡ãã¦ããææ¸ã§ãä»ã®ææ¸ã«åãè¾¼ã¾ãã¦ããªããã®ï¼ã«éå®ããã¾ãã<iframe>
è¦ç´ å
ããå¼ã³åºãã¨ãä½ãããã«è§£æ±ºãã¾ãã
options
çç¥å¯
ãªã¯ã¨ã¹ããããæ°ãã Credentials
ãªãã¸ã§ã¯ãã®ãªãã·ã§ã³ãæ ¼ç´ãããªãã¸ã§ã¯ãã以ä¸ã®ããããã£ãæ ¼ç´ãããã¨ãã§ãã¾ãã
signal
çç¥å¯
é²è¡ä¸ã® create()
å¦çã䏿¢ãããããã® AbortSignal
ãªãã¸ã§ã¯ãã®ã¤ã³ã¹ã¿ã³ã¹ã§ãã䏿¢ãããæä½ã¯ãï¼å®å
¨ã«å¦çãçµäºããå¾ã«ä¸æ¢ãåãåã£ãå ´åã¯ï¼æ£å¸¸ã«å®äºãããã¨ãããã°ã"AbortError
" ã® DOMException
ã§æå¦ããããã¨ãããã¾ãã
以ä¸ã®ããããã£ã¯ããããã使ãã è³æ ¼æ å ±ã®ç¨®å¥ ã表ãã¾ããæå®ã§ããã®ã¯1ã¤ã ãã§ãï¼
federated
çç¥å¯
ãã§ãã¬ã¼ã·ã§ã³ ID ãããã¤ãã¼ã®è³æ ¼æ å ±ã使ããããã®è¦ä»¶ãæ ¼ç´ãããªãã¸ã§ã¯ãã§ãããã§ãã¬ã¼ã·ã§ã³è³æ ¼æ å ±ç®¡ç API (FedCM) ã¯ããã®è³æ ¼æ å ±ã®ç¨®é¡ãããåªå ããããã¨ã«æ³¨æãã¦ãã ããã詳細ã¯ä¸è¨ã®è³æ ¼æ å ±ç®¡ç API ã®ç¯ãåç §ãã¦ãã ããã
password
çç¥å¯
ãã¹ã¯ã¼ãè³æ ¼æ å ±ã使ããããã®è¦ä»¶ãæ ¼ç´ãããªãã¸ã§ã¯ãã§ãã詳細ã¯ä¸è¨ã®è³æ ¼æ å ±ç®¡ç API ã®ç¯ãåç §ãã¦ãã ããã
publicKey
çç¥å¯
å
¬ééµè³æ ¼æ
å ±ã使ããããã®è¦ä»¶ãæ ¼ç´ãããªãã¸ã§ã¯ãã§ããcreate()
ã®å¼ã³åºããçºçãããã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããèªè¨¼æ©è½ã使ã£ã¦æ°ããè³æ ¼æ
å ±ã使ããããã«ãªã¯ã¨ã¹ããã¾ãã詳細ã¯ä¸è¨ã®ã¦ã§ãèªè¨¼ API ã®ç¯ãåç
§ãã¦ãã ããã
è³æ ¼æ å ±ç®¡ç API ã¯ãã¦ã§ããµã¤ãããã¹ã¯ã¼ãã飿ºããè³æ ¼æ å ±ãæ ¼ç´ãããåå¾ããããããã¨ãã§ãã¾ãããããã®æ©è½ã«ãããã¦ã¼ã¶ã¼ã¯ãã¹ã¯ã¼ããå ¥åããã«ãã°ã¤ã³ãããããµã¤ãã«ãã°ã¤ã³ããããã«ä½¿ç¨ãããã§ãã¬ã¼ã·ã§ã³ã¢ã«ã¦ã³ãã確èªããããæéåãã®ã»ãã·ã§ã³ã§æç¤ºçãªãã°ã¤ã³ããã¼ãè¡ããã«ã»ãã·ã§ã³ãåéãããã¨ãã§ãã¾ãã
federated
ãªãã¸ã§ã¯ãã®æ§é
federated
ã«ã¯ä»¥ä¸ã®ããããã£ãè¨å®ãããã¨ãã§ãã¾ãã
iconURL
çç¥å¯
ãã®è³æ ¼æ å ±ã¨é¢é£ä»ããããã¢ã¤ã³ã³ã¾ãã¯ã¢ãã¿ã¼ã® URL ã表ãæååã
id
ãã®è³æ ¼æ å ±ã®åºæã® ID ã表ãæååã§ãã
name
çç¥å¯
ãã®è³æ ¼æ å ±ã®ã¦ã¼ã¶ã¼åã表ãæååã§ãã
origin
ãã®è³æ ¼æ
å ±ã®ãªãªã¸ã³ã表ãæååã§ããFederatedCredential
ãªãã¸ã§ã¯ãã¯ãªãªã¸ã³ã«ç´ä»ãã¦ããã使ç¨ãããã¨ãæå®ãããªãªã¸ã³ã§ã®ã¿ä½¿ç¨ãããã¨ãã§ãã¾ãã
protocol
çç¥å¯
è³æ ¼æ
å ±ã®ãã§ãã¬ã¼ã·ã§ã³ ID ãããã¤ãã¼ã®ãããã³ã«ã表ãæååï¼ä¾ãã°ã"openidconnect"
ï¼ã
provider
è³æ ¼æ
å ±ã®ãã§ãã¬ã¼ã·ã§ã³ ID ãããã¤ãã¼ã表ãæååã§ãï¼ä¾ãã° "https://www.facebook.com"
ã "https://accounts.google.com"
ï¼ã
password
ãªãã¸ã§ã¯ãã®æ§é
password
ãªãã¸ã§ã¯ãã¯ããªãã¸ã§ã¯ããªãã©ã«ã¸ã®åç
§ã HTMLFormElement
ã«ãªãã¾ããã©ã¡ãã®å ´åãã以ä¸ã®ãã¼ã¿ãæä¾ããå¿
è¦ãããã¾ãã
iconURL
çç¥å¯
è³æ ¼æ å ±ã¨é¢é£ä»ããããã¢ã¤ã³ã³ã¾ãã¯ã¢ãã¿ã¼ã® URL ã表ãæååã
id
ãã®è³æ ¼æ å ±ã®åºæã® ID ã表ãæååã§ãã
name
çç¥å¯
ãã®è³æ ¼æ å ±ã®ã¦ã¼ã¶ã¼åã表ãæååã§ãã
origin
ãã®è³æ ¼æ
å ±ã®ãªãªã¸ã³ã表ãæååã§ããPasswordCredential
ãªãã¸ã§ã¯ãã¯ãªãªã¸ã³ã«ç´ä»ãã¦ããã使ç¨ãããã¨ãæå®ãããªãªã¸ã³ã§ã®ã¿ä½¿ç¨ãããã¨ãã§ãã¾ãã
password
è³æ ¼æ å ±ã®ãã¹ã¯ã¼ãã表ãæååã§ãã
æååãªãã©ã«ã®å ´åãããããã£ã¯ãã®ã¾ã¾æä¾ããã¾ããHTMLFormElement
ã®å ´åããã©ã¼ã å
¥åãã£ã¼ã«ãï¼ãã㯠<input>
ã<select>
ã<textarea>
è¦ç´ ï¼ãç¨ãã¦ã以ä¸ã® name
屿§ã®å¤ã§æä¾ããå¿
è¦ãããã¾ãã
id
: "username"
name
: "name"
ã¾ã㯠"nickname"
iconURL
: "photo"
password
: "new-password"
ã¾ã㯠"current-password"
ãã®ä¾å¤ã¯ origin
ã§ããã㯠HTMLFormElement
ãæ ¼ç´ããã¦ããææ¸ã®ãªãªã¸ã³ã«è¨å®ããã¾ãã
æå®ããã弿°ã«ä¸è´ãã Credential
ã¤ã³ã¹ã¿ã³ã¹ã«è§£æ±ºãã Promise
ãè¿ãã¾ãã
federated
ãªãã¸ã§ã¯ãã§ãã£ãå ´åãè¿ãã¤ã³ã¹ã¿ã³ã¹ã¯ FederatedCredential
ã¨ãªãã¾ããpassword
ãªãã¸ã§ã¯ãã§ãã£ãå ´åãè¿ãã¤ã³ã¹ã¿ã³ã¹ã¯ PasswordCredential
ã¨ãªãã¾ããåä¸ã®è³æ ¼æ
å ±ãæ£å¸¸ã«çæã§ããªãå ´åããããã¹ã¯ null
ã«è§£æ±ºããã¾ãã
TypeError
PasswordCredential
使ãªã¯ã¨ã¹ãã®å ´åãid
ãorigin
ãpassword
ãæå®ãããªãã£ãï¼ç©ºã ã£ãï¼ã
navigator.credentials
.create({
password: {
id: "ergnjregoith5y9865jhokmfdskl;vmfdl;kfd...",
name: "fluffybunny",
origin: "example.com",
password: "fluffyhaxx0r",
},
})
.then((pwdCred) => {
console.log(pwdCred.name);
});
ã¦ã§ãèªè¨¼ API
ã¦ã§ãèªè¨¼ API ã¯ãå ¬é鵿巿¹å¼ã«ããå¼·åãªèªè¨¼ãå¯è½ã«ãããã¹ã¯ã¼ãã¬ã¹èªè¨¼ã SMS ã使ããªãå®å ¨ãªå¤è¦ç´ èªè¨¼ (MFA) ãå®ç¾ãã¾ãã詳細ãªä½¿ç¨æ å ±ã«ã¤ãã¦ã¯ããªã³ã¯å ã® API ã©ã³ãã£ã³ã°ãã¼ã¸ã確èªãã¦ãã ããã
ã¡ã¢: create()
ã publicKey
弿°ä»ãã§ä½¿ç¨ããã¨ããµã¼ãã¼ã« publickey-credentials-create
権éããªã·ã¼ãè¨å®ããã¦ããå ´åããããã¯ããããã¨ãããã¾ãã
publicKey
ãªãã¸ã§ã¯ãã®æ§é
publicKey
ãªãã¸ã§ã¯ãã«ã¯ä»¥ä¸ã®ããããã£ãè¨å®ãããã¨ãã§ãã¾ãã
attestation
çç¥å¯
è³æ ¼æ å ±ä½ææã«èªè¨¼ã¹ãã¼ãã¡ã³ãï¼ããªãã¡ãèªè¨¼åã¨ãã®ãã¼ã¿ã®çæ£æ§ã®æ¤è¨¼å¯è½ãªè¨¼æ ã®æä¾ï¼ãã©ã®ããã«ä¼ãããã«ã¤ãã¦ãä¿¡é ¼å½äºè (relying party) ã®ç°å¢è¨å®ãæå®ããæååã§ããå¤ã¯ä»¥ä¸ã®ããããã§ãã
"none"
ä¿¡é ¼å½äºè
ãèªè¨¼è
ã®æ¤è¨¼ã«é¢å¿ãæã£ã¦ããªããã¨ãæå®ãã¾ããããã¯ãèªè¨¼ããã»ã¹ãããåæ»ã«ããããã«ãè奿
å ±ãä¸ç¶ããããã«é ¼ã£ã¦ãããµã¼ãã¼ã¸ã®å¾å¾©ããèªè¨¼èªè¨¼å±(CA)ã¸ã®å¾å¾©ã«å¯¾ããã¦ã¼ã¶ã¼ã®è¿½å åæãé¿ããããããããã¾ããããã attestation
ã®å¤ã¨ã㦠"none"
ãé¸ã°ããèªè¨¼å±ãèªè¨¼ã¹ãã¼ãã¡ã³ããçæããããã« CA ã使ç¨ãããã¨ãæç¤ºããå ´åãã¯ã©ã¤ã¢ã³ãã¢ããªã¯èªè¨¼ã¹ãã¼ãã¡ã³ãã "None" ã«ç½®ãæãã¦ãèªè¨¼ã¹ãã¼ãã¡ã³ãã使ç¨ã§ããªããã¨ã示ãã¾ãã
"direct"
ä¿¡é ¼å½äºè ããèªè¨¼è ãçæããèªè¨¼ã¹ãã¼ãã¡ã³ãã®åä¿¡ã叿ãããã¨ãæå®ãã¾ãã
"enterprise"
ä¿¡é ¼å½äºè ããåºæã®è奿 å ±ãå«ãããã¨ãã§ããèªè¨¼ã¹ãã¼ãã¡ã³ããåãåããããã¨ãæå®ãã¾ããããã¯ãçµç¹ãç»é²ãåºæã®èªè¨¼åã«çµã³ã¤ãããã¨ãæãã伿¥å ã®å¶å¾¡ããå±éã®ããã«æå³ããã¦ãã¾ãã
"indirect"
ä¿¡é ¼å½äºè ãæ¤è¨¼å¯è½ãªèªè¨¼ã¹ãã¼ãã¡ã³ããåä¿¡ãããã¨ãæå®ãã¾ããããã®åä¿¡æ¹æ³ãã¯ã©ã¤ã¢ ã³ããæ±ºå®ãããã¨ã許å¯ãã¾ããä¾ãã°ãã¯ã©ã¤ã¢ã³ãã¯ãã¦ã¼ã¶ã¼ã®ãã©ã¤ãã·ã¼ãä¿è·ããããã«ãèªè¨¼è ã®ã¢ãµã¼ã·ã§ã³ã¹ãã¼ãã¡ã³ããå¿åå CA ãçæãããã®ã¨ç½®ãæãããã¨ãé¸ã¶ãã¨ãã§ãã¾ãã
attestation
ãé¤å¤ããã¨ãæ¢å®å¤ã§ "none"
ã¨ãªãã¾ãã
attestationFormats
çç¥å¯
ä¿¡é ¼å½äºè ããèªè¨¼æ©é¢ã使ç¨ããèªè¨¼ã¹ãã¼ãã¡ã³ãå½¢å¼ã«å¯¾ããè¨å®ãæå®ããæååã®é åã§ããå¤ã¯ãç°å¢è¨å®ã®é«ããã®ããä½ããã®ã¸ã¨ä¸¦ã¹ããããã³ãã¨ã¿ãªãããå¿ è¦ãããã¾ããèªè¨¼è ã¯ãç°ãªãå½¢å¼ã§èªè¨¼ã¹ãã¼ãã¡ã³ããçºè¡ãããã¨ãé¸ã¶ããããã¾ãããæå¹ãªå½¢å¼ã®ä¸è¦§ã¯ãWebAuthn Attestation Statement Format Identifiers ãåç §ãã¦ãã ããã
çç¥ããå ´åãattestationFormats
ã®æ¢å®å¤ã¯ç©ºã®é
åã¨ãªãã¾ãã
authenticatorSelection
çç¥å¯
ãã®ããããã£ã¯ãè³æ ¼æ å ±ä½æå¦çã®ããã«æ½å¨çãªèªè¨¼åããã£ã«ã¿ãªã³ã°ããããã«ä½¿ç¨ãããåºæºã§ãããªãã¸ã§ã¯ãã§ãããã®ãªãã¸ã§ã¯ãã«ã¯ãããããã£ãæ ¼ç´ãããã¨ãã§ãã¾ãã
authenticatorAttachment
çç¥å¯
é¸ã°ããèªè¨¼åã«å¯¾ãã¦ãã©ã®èªè¨¼åæ·»ä»åã許å¯ãã¹ããã示ãæååã§ãã使ç¨å¯è½ãªå¤ã¯ä»¥ä¸ã®éãã§ãã
"platform"
èªè¨¼å¨ã¯ WebAuthn ãåä½ããæ©å¨ (ãã©ãããã©ã¼ã èªè¨¼å¨ã¨å¼ã¶) ã®ä¸é¨ã§ãããããWebAuthn ã¯ãã©ãããã©ã¼ã åºæã® API ãªã©ããã®ãã©ãããã©ã¼ã ã§å©ç¨ã§ãããã©ã³ã¹ãã¼ãã使ç¨ãã¦èªè¨¼å¨ã¨éä¿¡ãã¾ãããã©ãããã©ã¼ã èªè¨¼å¨ã«ãã¤ã³ããããå ¬ééµè³æ ¼æ å ±ã¯ããã©ãããã©ã¼ã è³æ ¼æ å ±ã¨å¼ã°ãã¾ãã
"cross-platform"
èªè¨¼å¨ã¯ WebAuthn ãåä½ãã¦ããæ©å¨ï¼ç°ãªãæ©å¨éãç§»åã§ãããã ãã¼ãã³ã°èªè¨¼å¨ã¨å¼ã°ããï¼ã®ä¸é¨ã§ã¯ãªããããWebAuthn 㯠Bluetooth ã NFC ãªã©ã®ã¯ãã¹ãã©ãããã©ã¼ã ä¼éãããã³ã«ã使ç¨ãã¦éä¿¡ãã¾ãããã¼ãã³ã°èªè¨¼å¨ã«ãã¤ã³ããããå ¬ééµè³æ ¼æ å ±ã¯ããã¼ãã³ã°è³æ ¼æ å ±ã¨å¼ã°ãã¾ãã
çç¥ããã¨ãè³æ ¼æ å ±ä½æå¦çã«ããã©ãããã©ã¼ã ã¾ãã¯ã¯ãã¹ãã©ãããã©ã¼ã ã®ä»»æã®å ã®èªè¨¼åã鏿ã§ãã¾ãã
requireResidentKey
çç¥å¯
è«çå¤ã§ãããã®ããããã£ã¯éæ¨å¥¨ã§ãããWebAuthn Level 1 ã¨ã®å¾æ¹äºææ§ãä¿ã¤ããã«ä¸é¨ã®å®è£
ã§ã¯ã¾ã å©ç¨ã§ãã¾ããresidentKey
ã "required"
ã«è¨å®ããã¦ããå ´åãå¤ã¯ true
ã«è¨å®ããå¿
è¦ãããã¾ãã
çç¥ããå ´åãrequireResidentKey
ã®æ¢å®å¤ã¯ false
ã¨ãªãã¾ãã
residentKey
çç¥å¯
ä¿¡é ¼å½äºè
ãã¯ã©ã¤ã¢ã³ãå´çºè¦å¯è½è³æ ¼æ
å ±ï¼ããªãã¡ãä¿¡é ¼å½äºè
ãè³æ ¼ ID ãæä¾ããªãèªè¨¼ãªã¯ã¨ã¹ãã§ä½¿ç¨å¯è½ãªãã® - navigator.credentials.get()
ã allowCredentials
å¤ã空ã®ç¶æ
ã§å¼ã°ããï¼ãã©ã®ç¨åº¦ä½æãããããæå®ããæååã§ãããã®ä»£ããããµã¼ãã¼å´è³æ ¼æ
å ±ã§ãä¿¡é ¼å½äºè
ã get()
allowCredentials
å¤ã§è³æ ¼æ
å ± ID ãæä¾ããªããã°ãªãã¾ããã 使ç¨å¯è½ãªå¤ã¯ä»¥ä¸ã®éãã§ãã
"discouraged"
ä¿¡é ¼å½äºè ã¯ããµã¼ãã¼å´è³æ ¼æ å ±ã®ä½æãã§ããã°å¥½ã¾ããã¨èããããã¯ã©ã¤ã¢ã³ãå´çºè¦å¯è½è³æ ¼æ å ±ãåãå ¥ãã¾ãã
"preferred"
ä¿¡é ¼å½äºè
ã¯ãã¯ã©ã¤ã¢ã³ãå´ã®çºè¦å¯è½ãªè³æ ¼æ
å ±ã®ä½æãå¼·ã叿ãã¾ããããµã¼ãã¼å´ã®è³æ ¼æ
å ± ãåãå
¥ãããã¾ããã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã¯ãçºè¦å¯è½ãªè³æ ¼æ
å ±ã使ããããã«ãå¿
è¦ã§ããã°ã¦ã¼ã¶ã¼æ¤è¨¼ãè¨å®ããããã«ã¦ã¼ã¶ã¼ãã¬ã¤ãããå¿
è¦ãããã¾ãããã㯠userVerification
è¨å®ã«åªå
ãã¾ãã
"required"
ä¿¡é ¼å½äºè ã¯ãã¯ã©ã¤ã¢ã³ãå´çºè¦å¯è½è³æ ¼æ å ±ãå¿ è¦ã¨ãã¾ããçæã§ããªãå ´åã¯ãã¨ã©ã¼ãçºçãã¾ãã
çç¥ããå ´åã residentKey
㯠requireResidentKey
ã true
ãªãã° "required"
ã«ãããã§ãªããã° "discouraged"
ã«æ¢å®å¤ã¨ãã¦è¨å®ããã¾ãã
userVerification
çç¥å¯
create()
å¦çã«é¢ããã¦ã¼ã¶ã¼æ¤è¨¼ã®ããã®ä¿¡é ¼å½äºè
ã®è¦ä»¶ãæå®ããæååã§ãã使ç¨å¯è½ãªå¤ã¯ä»¥ä¸ã®éãã§ãã
"discouraged"
ä¿¡é ¼å½äºè
ã¯ãã¦ã¼ã¶ã¼ã®ä½¿ãåæã®ä½ä¸ãæå°éã«æããã¨ãã観ç¹ãããcreate()
æä½ã®ããã®ã¦ã¼ã¶ã¼æ¤è¨¼ãè¡ããªããã¨ã鏿ãã¾ãã
"preferred"
ä¿¡é ¼å½äºè
㯠create()
ã®å¦çã«ã¦ã¼ã¶ã¼ã®ç°å¢è¨å®ãåªå
ãã¾ãããã¦ã¼ã¶ã¼èªè¨¼ãè¡ããªãå ´åã§ã失æãããã¨ã¯ããã¾ããã
"required"
ä¿¡é ¼å½äºè
ã create()
æä½ã«ã¦ã¼ã¶ã¼èªè¨¼ãè¦æ±ãã¾ããã¦ã¼ã¶ã¼èªè¨¼ãå®è¡ã§ããªãå ´åã¯ãã¨ã©ã¼ãçºçãã¾ãã
çç¥ããå ´åãuserVerification
ã®æ¢å®å¤ã¯ "preferred"
ã¨ãªãã¾ãã
challenge
ä¿¡é ¼å½äºè
ã®ãµã¼ãã¼ããæä¾ããã ArrayBuffer
ãTypedArray
ãã¾ã㯠DataView
ã§ã cryptographic challenge ã¨ãã¦ä½¿ç¨ããã¾ãããã®å¤ã¯èªè¨¼è
ã«ãã£ã¦ç½²åãããç½²å㯠AuthenticatorAttestationResponse.attestationObject
ã®ä¸é¨ã¨ãã¦éãè¿ãããã
excludeCredentials
çç¥å¯
ãã®ã¦ã¼ã¶ã¼ã¢ã«ã¦ã³ãã«å²ãå½ã¦ãããæ¢åã®è³æ ¼æ
å ±ãè¨è¿°ãããªãã¸ã§ã¯ãã® Array
ã§ãï¼user.id
ã§èå¥ããã¾ãï¼ãããã¯ä¿¡é ¼å½äºè
ã«ãã£ã¦æä¾ãããã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã«ãã£ã¦èª¿ã¹ããã¾ããæå®ããã¦ã¼ã¶ã¼ã¢ã«ã¦ã³ãã«å²ãå½ã¦ãããè³æ ¼æ
å ±ããã§ã«æã£ã¦ããèªè¨¼åã«å¯¾ãã¦ãæ°ããå
¬ééµè³æ ¼æ
å ±ã使ãããã¨ãé¿ããããã§ããåé
ç®ã¯ã以ä¸ã®å½¢å¼ã§ãªããã°ãªãã¾ããã
id
æ¢åã®è³æ ¼æ
å ±ã表ã ArrayBuffer
ãTypedArray
ãDataView
ã®ããããã§ãã
transports
çç¥å¯
許å¯ããããã©ã³ã¹ãã¼ãã表ãæååã®é
å (Array
) ã§ãã使ç¨å¯è½ãªãã©ã³ã¹ãã¼ãã¯ã"ble"
ã"hybrid"
ã"internal"ã"nfc"
ã"usb"
ã§ãï¼è©³ç´°ã¯ getTransports()
ãåç
§ï¼ã
type
使ããå
¬ééµè³æ ¼æ
å ±ã®ç¨®é¡ãå®ç¾©ããæååãããã¯ç¾å¨ 1 ã¤ã®å¤ "public-key"
ãå°ãã¾ãããå°æ¥çã«ã¯ããã«å¤ãã®å¤ã追å ãããããããã¾ããã
create()
ã®å¼ã³åºããèªè¨¼åã§éè¤ããå
¬ééµèªè¨¼æ
å ±ã使ãããã¨ãã¦ããå ´åãã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã¯ç°ãªãèªè¨¼åã使ç¨ãã¦èªè¨¼æ
å ±ã使ããããã«ã¦ã¼ã¶ã¼ãã¬ã¤ããããããããä¸å¯è½ãªå ´åã¯å¤±æãã¾ãã
excludeCredentials
ãçç¥ãããå ´åãæ¢å®å¤ã¨ãã¦ç©ºã®é
åãæå®ããã¾ãã
extensions
çç¥å¯
ãªã¯ã¨ã¹ããããæ¡å¼µæ©è½ã®å ¥åå¤ã表ãããããã£ãæ ¼ç´ãããªãã¸ã§ã¯ãã§ãããããã®æ¡å¼µã¯ãè³æ ¼æ å ±ä½æããã»ã¹ä¸ã«ã¯ã©ã¤ã¢ã³ãã¾ãã¯èªè¨¼è ã«ãã追å å¦çãæå®ããããã«ä½¿ç¨ãã¾ãããã®ä¾ã«ã¯ãè¿ãè³æ ¼æ å ±ãçºè¦å¯è½ãã©ãããä¿¡é ¼å½äºè ãè³æ ¼æ å ±ã«é¢é£ãã大ã㪠blob ãã¼ã¿ãæ ¼ç´ã§ãããã©ãããªã©ãæå®ãããã¨ãå«ã¾ãã¾ãã
æ¡å¼µæ©è½ã¯ãªãã·ã§ã³ã§ããããã©ã¦ã¶ã¼ã®ç¨®é¡ã«ãã£ã¦ã¯ç°ãªãæ¡å¼µæ©è½ãèªèãããã¨ãããã¾ãããã©ã¦ã¶ã¼ãæå®ãããæ¡å¼µæ©è½ãèªèããªãå ´åããããç¡è¦ããã ãã§ããæ¡å¼µæ©è½ã使ç¨ããéã®æ å ±ããã©ã®æ¡å¼µæ©è½ãã©ã®ãã©ã¦ã¶ã¼ã§å¯¾å¿ãã¦ãããã«ã¤ãã¦ã¯ãã¦ã§ãèªè¨¼æ¡å¼µæ©è½ ãåç §ãã¦ãã ããã
pubKeyCredParams
ä¿¡é ¼å½äºè
ã対å¿ãã¦ããéµã®ç¨®é¡ã¨ç½²åã¢ã«ã´ãªãºã ãæå®ãããªãã¸ã§ã¯ãã®(Array
) ã§ãæã好ã¾ãããã®ããæã好ã¾ãããªããã®ã¸ã¨ä¸¦ã¹ããã¯ã©ã¤ã¢ã³ãã¨èªè¨¼å¨ã¯ã使ç¨å¯è½ãªæã好ã¾ãã種é¡ã®è³æ ¼æ
å ±ã使ããããæåã®åªåããã¾ãããããã®ãªãã¸ã§ã¯ãã¯ã以ä¸ã®ããããã£ãæ ¼ç´ãã¾ãã
alg
COSE ã¢ã«ã´ãªãºã èå¥åã«çããæ°å¤ã§ãããã®è³æ ¼æ å ± ã®ç¨®é¡ã«ä½¿ç¨ããæå·åã¢ã«ã´ãªãºã ã表ãã¾ããåºç¯å²ã®èªè¨¼è ã対å¿ãããä¿¡é ¼å½äºè ã¯ãæå®ããã鏿è¢ã«å°ãªãã¨ã以ä¸ã®å¤ãå«ãããã¨ãæ¨å¥¨ããã¾ãã
-8
: Ed25519-7
: ES256-257
: RS256type
使ããå
¬ééµè³æ ¼æ
å ±ã®ç¨®é¡ãå®ç¾©ããæååãããã¯ç¾å¨ 1 ã¤ã®å¤ "public-key"
ãåãã¾ãããå°æ¥çã«ã¯ããå¤ãã®å¤ã追å ããå¯è½æ§ãããã¾ãã
æ²è¼ããã¦ããè³æ ¼æ
å ±ã®ããããã使ã§ããªãå ´åãcreate()
æä½ã¯å¤±æãã¾ãã
rp
è³æ ¼æ å ±ã®ä½æããªã¯ã¨ã¹ããããä¿¡é ¼å½äºè ãè¨è¿°ãã¦ãããªãã¸ã§ã¯ãã以ä¸ã®ããããã£ãæ ¼ç´ãããã¨ãã§ãã¾ãã
id
çç¥å¯
ä¿¡é ¼å½äºè
ã® ID ã表ãæååãå
¬ééµè³æ ¼æ
å ±ã¯ãç»é²ããä¿¡é ¼å½äºè
ï¼navigator.credentials.get()
å¼ã³åºãã® publicKey.rpId
ã§èå¥ï¼ã¨åãèªè¨¼ã«ãã使ç¨ã§ãã¾ãããID ã¯ä¸è´ãã¦ããå¿
è¦ãããã¾ãã
id
ã«ã¯æ¨æºã®ãªãªã¸ã³ã®ããã«ãã¼ããã¹ãã¼ã ãå«ãããã¨ã¯ã§ãã¾ãããããã¡ã¤ã³ã¹ãã¼ã 㯠https
ã¹ãã¼ã ã§ããå¿
è¦ãããã¾ããid
ã¯å
ã®å®è³ªçãªãã¡ã¤ã³ãã¾ãã¯ãã®ãã¡ã¤ã³ãµãã£ãã¯ã¹ã¨åãã§ããå¿
è¦ãããã¾ããä¾ãã°ãä¿¡é ¼å½äºè
ã®ãªãªã¸ã³ã https://login.example.com:1337
ã®å ´åãæ¬¡ã® id
ãæå¹ã§ãã
login.example.com
example.com
ããããä¸è¨ã®ãã®ã¯æå¹ã«ã¯ãªãã¾ããã
m.login.example.com
com
çç¥ããå ´åãid
ã¯ææ¸ã®ãªãªã¸ã³ãæ¢å®å¤ã¨ãã¾ããä¸è¨ã®ä¾ã§ã¯ login.example.com
ã¨ãªãã¾ãã
name
ä¿¡é ¼å½äºè
ã®ååã表ãæååï¼ä¾ï¼"Facebook"
ï¼ã ããã¯ãWebAuthn ã使ããããå¦çãæ¤è¨¼ãããããã¨ãã«ãã¦ã¼ã¶ã¼ã表示ããååã§ãã
timeout
çç¥å¯
å¼ã³åºãããã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ã使å¦çãå®äºããã¾ã§ã®å¾ ã¡æéã示ãããªç§åä½ã®æ°å¤ãã³ãã§ãããã®ãã³ãã¯ããã©ã¦ã¶ã¼ã«ãã£ã¦ä¸æ¸ããããå¯è½æ§ãããã¾ãã
user
è³æ ¼æ å ±ãçæãããã¦ã¼ã¶ã¼ã¢ã«ã¦ã³ããè¨è¿°ãã¦ãããªãã¸ã§ã¯ãã§ãã以ä¸ã®ããããã£ãæ ¼ç´ãããã¨ãã§ãã¾ãã
displayName
人éã«ã¨ã£ã¦ããããããã¦ã¼ã¶ã¼ã®è¡¨ç¤ºåï¼ä¾ãã°ã"John Doe"
ï¼ãæä¾ããæååã§ãä¿¡é ¼å½äºè
ã®åæç»é²æã«ã¦ã¼ã¶ã¼ã«ãã£ã¦è¨å®ããããã®ã§ãã
id
ã¦ã¼ã¶ã¼ã¢ã«ã¦ã³ãã«å¯¾ãã¦åºæã®IDã表ã ArrayBuffer
ãTypedArray
ãDataView
ã§ãããã®å¤ã¯æå¤§ 64 ãã¤ãã®é·ããæã¡ãã¦ã¼ã¶ã¼ã«è¡¨ç¤ºããããã¨ãæå³ãã¦ãã¾ããã
name
displayName
ãä¼¼ã¦ããç°ãªãã¢ã«ã¦ã³ããå¤å¥ããã®ã«å½¹ç«ã¤ãã¦ã¼ã¶ã¼ã¢ã«ã¦ã³ãã®è¦ªãã¿ãããèå¥åãæä¾ããæååã§ãããã®ä¾ã§ã¯ãã¡ã¼ã«ã¢ãã¬ã¹ï¼ä¾ãã° "john.doe@example.com"ï¼ãé»è©±çªå·ï¼ä¾ãã° "+12345678901"
ï¼ãã¾ãã¯ä»ã«ãã¦ã¼ã¶ã¼ã¢ã«ã¦ã³ãã®èå¥åï¼ä¾ãã° "johndoe667"`ï¼ãèãããã¾ãã
hints
çç¥å¯
ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããã¦ã¼ã¶ã¼ã«æä¾ãã¹ãèªè¨¼ UI ã®ãã³ãã示ãæååã®é åã§ãã
å¤ã¯ä»¥ä¸ã®ããããã«ãªãã¾ãã
"security-key"
èªè¨¼ã«ã¯ãéµãæä¾ããããã®å¥åã®å°ç¨ç©ç端æ«ãè¦æ±ããã¾ãã
"client-device"
ã¦ã¼ã¶ã¼ã¯èªåèªèº«ã§æºå¸¯é»è©±ãªã©ã®ç«¯æ«ã使ç¨ãã¦èªè¨¼ãã¾ãã
"hybrid"
èªè¨¼ã¯ãèªå¯/èªè¨¼ã¡ã½ããã®çµã¿åããã«é ¼ã£ã¦ãããã¦ã¼ã¶ã¼ãã¼ã¹ã¨ãµã¼ãã¼ãã¼ã¹ã®ä¸¡æ¹ã®ã¡ã«ããºã ã«é ¼ã£ã¦ããå¯è½æ§ãããã¾ãã
æå®ããã弿°ã«ä¸è´ãã PublicKeyCredential
ã¤ã³ã¹ã¿ã³ã¹ã«è§£æ±ºãã Promise
ã§ããè³æ ¼æ
å ±ãªãã¸ã§ã¯ãã使ã§ããªãå ´åããããã¹ã¯ null
ã§è§£æ±ºããã¾ãã
NotAllowedError
DOMException
以ä¸ã®ãããªåå ã§çºçãã¾ãã
publickey-credentials-create
権éããªã·ã¼ã«ããã使ç¨ããããã¯ããã¾ãããallow
屿§ã«é©å㪠publickey-credentials-create
ããªã·ã¼ãè¨å®ããã¦ãã¾ããã<iframe>
ã¯ä¸æçãªæå¹åãè¡ããã¦ãã¾ããã以ä¸ã®ã¹ããããã¯ãWebAuthn ã® publicKey
ãªãã·ã§ã³ãæå®ããå
¸åç㪠create()
å¼ã³åºãã示ãã¦ãã¾ãã
const publicKey = {
challenge: new Uint8Array([117, 61, 252, 231, 191, 241, ...]),
rp: { id: "acme.com", name: "ACME Corporation" },
user: {
id: new Uint8Array([79, 252, 83, 72, 214, 7, 89, 26]),
name: "jamiedoe",
displayName: "Jamie Doe"
},
pubKeyCredParams: [ {type: "public-key", alg: -7} ]
}
navigator.credentials.create({ publicKey })
create()
ã®å¼ã³åºãã«æåããã¨ã PublicKeyCredential
ãªãã¸ã§ã¯ãã¤ã³ã¹ã¿ã³ã¹ã«è§£æ±ºãããããã¹ãè¿ãã¾ããããã¯ãå¾ã« WebAuthn get()
å¼ã³åºãã§ã¦ã¼ã¶ã¼ãèªè¨¼ããããã«ä½¿ç¨ã§ããå
¬ééµè³æ ¼æ
å ±ã表ãã¦ãã¾ãããã® PublicKeyCredential.response
ããããã£ã«ã¯ AuthenticatorAttestationResponse
ãªãã¸ã§ã¯ããæ ¼ç´ãããèªè¨¼ãã¼ã¿ãå
¬ééµã転éã¡ã«ããºã ãªã©ãããã¤ãã®æçãªæ
å ±ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
navigator.credentials.create({ publicKey }).then((publicKeyCredential) => {
const response = publicKeyCredential.response;
// Access attestationObject ArrayBuffer
const attestationObj = response.attestationObject;
// Access client JSON
const clientJSON = response.clientDataJSON;
// Return authenticator data ArrayBuffer
const authenticatorData = response.getAuthenticatorData();
// Return public key ArrayBuffer
const pk = response.getPublicKey();
// Return public key algorithm identifier
const pkAlgo = response.getPublicKeyAlgorithm();
// Return permissible transports array
const transports = response.getTransports();
});
ãã®ãã¼ã¿ã®ä¸é¨ã¯ããã®è³æ ¼æ å ±ã«å¯¾ããå°æ¥ã®èªè¨¼å¦çã®ããã«ãµã¼ãã¼ã«æ ¼ç´ããå¿ è¦ãããã¾ããä¾ãã°ãå ¬ééµã使ç¨ããã¢ã«ã´ãªãºã ã許å¯ããããã©ã³ã¹ãã¼ããªã©ã§ãã
ã¡ã¢: å ¨ä½çã«ã©ã®ããã«ä½æ¥ãæµãããã«ã¤ãã¦ã®è©³ããæ å ±ã¯ããã¼ãã¢ãçæãã¦ã¦ã¼ã¶ã¼ãç»é²ãåç §ãã¦ãã ããã
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4