Open5

WebAuthn メモ

voluntasvoluntas

モチベーション

  • 自社サービスで WebAuthn を提供したい
  • Cloudflare Workers で完結して WebAuthn 機能を提供したい
  • メール認証をベースとして WebAuthn を追加で設定できるようにしたい
  • Passkeys を利用できるようにしたい
  • Cloudflare Workers の Service Binding を利用して env.webauthn.fetch("/register-challenge") とか呼べるようにしたい
  • Cloudflare Workers だけで動く依存ライブラリがない WebAuthn サービスを利用する

状況

  • 自社サービスに導入するために 1 から調査しながら実装している
  • 採算度外視でよい
  • TypeScript で頑張って書いてるが辛くなって Erlang/OTP で書き直す可能性あり
    • ただそのサーバやデータベースを運用することを考えると Cloudflare Workes の方が現実的
voluntasvoluntas

ritou

Yubico

WebAuthn

CBOR

voluntasvoluntas

WebAuthn 雑感

3 日目

便利で簡単に使える裏にあまりにも膨大な仕様があり、はっきり言ってこれを自社サービスに自社で頑張って実装する必要はないと思う。ただこれフレームワークを導入するにしても仕組みを理解してないと恐くて使えない気がするのも難点。

そもそも導入しても既存の認証に対してパスワードレス認証を適用するという仕組みなので、はっきり言って魅力がない。

自分のモチベーションとしては Cloudflare Workers で気軽に動かせるというのがあるので、ほぼ自前実装している。CBOR (cbor-x) と COSE (まだ見つけてない) はライブラリ依存にする予定。

WebAuthn API がサーバーとのやりとりありきの API を持ってるくせに、 Uint8Array という JSON 化できない値をそのまま使ってるのが理解に苦しむ。そもそも base64url でエンコードした値をそのまま食べさせられるという実装を作っても良かったのではないか。

4 日目

  • COSE 実装しているが、本当に使用がひどい
  • Web Crypto を使うために色々自前で頑張る必要があるのひどい
  • YubiKey 5C でとりあえず register まではできた
  • RS256 は対応しないことにした