14,717,618,286
Leaked Credentials
Since 2013
@kukicado
Only 4%
Secure Breaches
meaning data was useless
@kukicado
Passwords Have Failed
3 Alternatives to Authenticating Users
@kukicado
@kukicado
@kukicado
Department of Motor Vehicles
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
/callback?code={123}
{ tokens }
{ sid 123 }
@kukicado
{ html }
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
navigator.credentials
.create({
publicKey: {
challenge: base64url.decode("<%= challenge %>"),
rp: {
name: "Awesome Corp" // sample relying party
},
user: {
id: base64url.decode("<%= id %>"),
name: "<%= name %>",
displayName: "<%= displayName %>"
},
authenticatorSelection: { userVerification: "preferred" },
attestation: "direct",
pubKeyCredParams: [
{
type: "public-key",
alg: -7 // "ES256" IANA COSE Algorithms registry
}
]
}
})
.then(res => {
var json = publicKeyCredentialToJSON(res);
post("/webauthn/register", {
state: "<%= state %>",
provider: "<%= provider %>",
res: JSON.stringify(json)
});
})
.catch(console.error);
navigator.credentials
.get({
publicKey: {
challenge: base64url.decode("<%= challenge %>"),
allowCredentials: [
{
id: base64url.decode("<%= id %>"),
type: "public-key"
}
],
timeout: 15000,
authenticatorSelection: { userVerification: "preferred" }
}
})
.then(res => {
var json = publicKeyCredentialToJSON(res);
// Send data to relying party's servers
post("/webauthn/authenticate", {
state: "<%= state %>",
provider: "<%= provider %>",
res: JSON.stringify(json)
});
})
.catch(err => {
alert("Invalid FIDO device");
});
@kukicado
@kukicado
@kukicado
@kukicado
@kukicado
Traditional password based authentication is antiquated and insecure
There are 3 viable alternatives to password based authentication
No system is flawless, consider your specific use case before making the switch
@kukicado
WebAuthn Demo
https://webauthn.me
Passwordless
https://auth0.com/passwordless
Learn Identity
https://auth0.com/docs/videos/learn-identity
@kukicado
Securing Vue.js with OpenID Connect and OAuth
Bobby Johnson (Room 127)
O-What? An Intro to OAuth For Software Developers.
Joel Lord (Room 235)
http://bit.ly/midwestjs-ado