Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜

Avatar for utakaha utakaha
October 18, 2026

Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜

Avatar for utakaha

utakaha

October 18, 2026

Other Decks in Programming

Transcript

  1. RP ID(Relying Party Identifier)とは? • WebAuthnで登録や認証を⾏うサービスを識別するための識 別⼦ • サービスのドメイン名が設定され、スキームやポート番号は 含まれない

    ◦ 例: example.com • パスキーはRP IDに紐づいて作成され、そのRP IDのスコープ 内でのみ利⽤できる ◦ たとえば example.com をRP IDにすると、example.com とそのサブド メインでも同じパスキーを利⽤できる 27
  2. RP IDにサブドメインを含める場合 tenant1とtenant2に所属する ユーザー ⭕ ログインできる tenant1.smarthr.jp RP ID =

    “tenant1.smarthr.jp” でパスキーを作成 ❌ ログインできない tenant2.smarthr.jp 29
  3. ログインページを開いたタイミングでパス キーの候補を表⽰する • navigator.credentials.get()に mediation: "conditional" を指定してConditional UIを開始する • ログインフォームの⼊⼒欄に

    autocomplete="username webauthn" を指定し、パ スキーの候補を表⽰できるようにする • autofocus を指定すると、ページを開いたタイミング で⼊⼒欄にフォーカスできる 46
  4. ユーザーごとに複数のパスキーを登録できる ようにする • WebAuthnの仕様書(Web Authentication: An API for accessing Public

    Key Credentials Level 3)でも、認証器の紛失に備えて複数 のパスキーを登録できるようにすることが推奨されている • パスワードマネージャーのサービス終了などに備え、異なる認証 器にもパスキーを登録できるようにしておくことが望ましい • ただし、無制限に登録できる必要はないと判断し、上限を15個に 設定した ref: https://www.w3.org/TR/webauthn-3/#sctn-credential-loss-key-mobility 57
  5. 61

  6. 62

  7. 63

  8. 64

  9. 65