Skip to content
appleplePublic

About

a-blog cms にパスキー(WebAuthn)ログインを追加するプラグイン

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

32 Commits

Folders and files

Repository files navigation

a-blog cms Passkey プラグイン

a-blog cms の 管理画面ログインをパスキー(WebAuthn)でできるようにするプラグインです。パスワードの代わりに、Touch ID や Windows Hello などの生体認証でログインできるようになります。

Warning

このプラグインは、Ver. 3.3.0 で本体機能として公式提供を予定している機能のプレビュー版です。本体機能との互換性はないため、3.3.0 へのアップデート後はパスキーの再登録が必要になります。本プラグインの配布およびメンテナンスは、3.3.0 のリリース後に終了を予定しています。

できること

  • 管理ログイン画面 (/login/) に「パスキーでログイン」ボタンを自動追加。ID やパスワードの入力は不要です
  • 各ユーザーが、ユーザー管理ページから自分のパスキーを登録・削除できます
  • 管理者は、サイト全体のパスキー台帳で登録状況を把握し、退職・端末紛失時に失効できます
  • パスキー未登録のユーザーには、ログイン時に登録をすすめるモーダルを表示できます
  • 認証器名を自動判別して表示します(AAGUID から「Apple iCloud Keychain」「Windows Hello」など)
  • インストールだけで完結します。テーマの修正や YAML の編集は不要です

動作要件

  • a-blog cms Ver. 3.0.x - 3.2.x
  • PHP 8.0.x 以上(ext-openssl, ext-mbstring 必須、ext-sodium 推奨)
  • HTTPS(WebAuthn API はブラウザが HTTP を拒否するため)
  • WebAuthn Level 2 対応ブラウザ(最新の Chrome / Safari / Edge / Firefox)

インストール

ダウンロード

最新版の zip をダウンロード

過去のバージョンはリリース一覧から取得できます。

構成

配布 zip を展開すると、次の構成になっています。

Passkey-X.Y.Z/
├── README.md                     ← このファイル(アップロード不要)
└── extension/
    └── plugins/
        └── Passkey/              ← これをアップロードします

FTP でアップロードする場合

extension/plugins/Passkey/ フォルダごと、サーバー上の同じ階層へアップロードします。

(サーバー上)/extension/plugins/Passkey/

extension フォルダをそのままアップロードしても構いません。既存のフォルダに統合されます。README.md はアップロードしないでください(サーバー上に不要なファイルが残ります)。

有効化

管理画面の「拡張アプリ」から Passkey をインストール → 有効化 してください。サイドバーに「拡張メニュー > Passkey」が現れます。

拡張アプリの有効化はブログごとの設定です。子ブログのログインページ(/bid/2/login/ など)でもパスキーを使う場合は、その子ブログの管理画面でも有効化してください。有効になっていないブログでは、ログイン画面に「パスキーでログイン」ボタンが追加されません。

config.server.php の設定

config.server.php の HOOK_ENABLE を 1 にしてください。Ver. 3.0 では既定値が 0 で、このままではログイン画面に「パスキーでログイン」ボタンが追加されません。

define('HOOK_ENABLE', 1);

設定されていない場合は、管理画面のパスキー関連ページに警告が表示されます。

使い方

パスキーを登録する

各ユーザーが自分で登録します。ユーザー管理 の基本設定を開くと、2段階認証の下に「パスキー:設定する」ボタンが表示されます。そこから登録・削除ができます。

このボタンとページはプラグインが自動で表示するため、テーマを編集する必要はありません。操作はログインしている本人のパスキーだけが対象で、他人のパスキーを見たり消したりはできません。

パスキーでログインする

管理ログイン画面に「パスキーでログイン」ボタンが追加されています。押すとブラウザや OS の認証器が起動し、ID やメールアドレスを入力せずにログインできます。

登録状況を確認する・失効させる(管理者)

サイドバーの「拡張メニュー > Passkey」に、全ユーザーのパスキー台帳があります。誰がどの認証器をいつ登録し、最後にいつ使ったかを一覧でき、退職や端末紛失の際はここから削除して失効させられます。この画面は管理者のみアクセスできます。

登録をすすめるモーダル

パスキーを登録していないユーザーがログインすると、登録をすすめるモーダルが表示されます。

  • 表示されるのはログインするたびに、直後の画面で 1 回だけです。ページを移動するたびに出続けることはありません
  • 「設定する」を押すと、自分のパスキー管理ページへ移動します
  • 「あとで」(または ESC・背景クリック)で閉じると、一定期間(初期値 30 日)表示されなくなります。この記録はブラウザごとに保存されます
  • パスキーを登録済みのユーザーには表示されません

台帳の「設定」ボタンから設定画面を開くと、モーダルの 表示する/表示しない と 「あとで」の非表示期間(日数) をブログ単位で変更できます。

対象となるユーザー

このプラグインは 管理ログイン(/login/)専用です。フロントのサインイン(会員機能)のパスキー対応は行いません。

権限 パスキーの利用
管理者 / 編集者 / 投稿者 ○
読者 ―

読者(subscriber)はパスキーを利用できません。登録ページも表示されず、ログインをすすめるモーダルも出ません。フロントのサインイン画面に「パスキーでログイン」ボタンが出ることもありません。

万一読者がパスキーを保持していた場合でも、認証後の権限チェック(権限・所属ブログ・IP・端末制限)で拒否されるため、権限の抜け道にはなりません。

Note: signin_page_auth を contributor に設定している場合、a-blog cms の仕様で投稿者も管理ログインの対象外になります。この場合は投稿者もパスキーを利用できません。

設定(任意)

private/config.system.yaml で以下を指定できます。いずれも未設定で動作します。

キー 内容
passkey_rp_id パスキーを紐づけるドメイン。未設定だと Host ヘッダーから自動決定します。プロキシ経由や複数ドメインで運用する場合は明示を推奨します
passkey_rp_name 認証時にブラウザが表示するサイト名。未設定ならサイト名を使います
passkey_user_verification 生体認証・PIN の要求レベル(required / preferred / discouraged)。初期値は preferred

詳細仕様

extension/plugins/Passkey/SPEC.md を参照してください。アーキテクチャ、認証フロー(シーケンス図付き)、DB スキーマ、エンドポイント、セキュリティ、本体組み込み時の設計提案を記載しています。

ライセンス

MIT

About

a-blog cms にパスキー(WebAuthn)ログインを追加するプラグイン

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages