Nextcloud 11 での Webログイン時に、2要素認証によるログインを行うように設定してみます。
- Nextcloud での 2要素認証について
- Two Factor TOTP Provider (ソフトウェアトークン)
- Two Factor U2F (ハードウェアのトークン)
- 必要なアプリを有効にする
- 第2因子バックアップコードの生成(保険)
- TOTP認証を有効にする
- TOTP対応アプリでQRコードを読み取る
- バックアップコードによるログイン
- 管理者操作による救済方法
Nextcloud 11.0.2 時点では、認証の種類は次の2つが対応しているようです。
ハードウェアトークンというのは、下記のようなUSBデバイスを使って認証を行う方式のようです。
ハードウェア方式は、また別途やり方を調べてみたいと思います。
今回はソフトウェアトークンの設定方法についてまとめます。
TOTP というのは、時間ベースで発行されるトークンです。
発行されたトークンは、一定時間を過ぎると無効となり、また新しいトークンが生成される方式です。
一定時間有効なので、一度きりの使用では無効にならず、時間内であれば何度でも使用が可能です。
※Nextcloud 11 では、30秒毎にトークンの表示が切り替わりますが、
トークン自体は、約2分程度有効なようでした。
では、設定していきます。
2要素認証を導入される方は、Nextcloudをそれなりに使い込んでいるかと思いますので、細かい手順については割愛します。
アプリの追加画面(アプリストア)=> 認証タブから、
twofactor_totp アプリ: 1.1.0 を有効にします。
また、twofactor_backupcodes: 1.0.0 が
有効になっていることも確認します。(デフォルトで有効)
まず、個人画面(settings/personal)=> 第2因子バックアップコードから、バックアップコードを生成しておきます。
スマートフォンの破損や紛失などで、2要素認証が行えなくなった時にも、バックアップコードでログインすることが可能です。
ただし印刷や手帳などに書き留めておくなどの保管が必要です。
バックアップコードは一度に10個表示され、それぞれ1度の使用で無効化されていきます。
バックアップコードが不要な場合は、この手順は必要ありません。
またバックアップコードよる認証を無効にしたい場合は、
twofactor_backupcodes アプリを無効にすればよいです。
次に、個人画面(settings/personal)、TOTP second-factor auth にて、TOTP有効化にチェックします。
TOTPが有効になると、設定用のQRコードが表示されます。
設定用のQRコードは、一度しか表示されないので、QRコードが消えてしまった場合は、
TOTPの無効化 => 有効化 を再度試します。
TOTP対応アプリで設定用QRコードを読み取ります。
スマートフォンの場合は、Google Playストア(Android)や、App Store(iOS)などで、
「TOTP認証」と入力すれば、対応アプリがたくさん出てきますので、お好きなものをどうぞ。
自分は、IIJ SmartKey を使ってみました。
TOTP対応アプリでQRコードを読み込み設定を保存すると、
30秒ごとに数字6桁のトークンが表示されますので、
この数字を Nextcloudのログイン時に入力します。
通常のユーザアカウント名とパスワードでの認証後、
TOTPトークンによる追加認証の画面が表示されます。
トークンを間違えたり、トークンの有効期限が過ぎると、認証エラーとなります。
何らかの理由により、2要素認証によるログインができなくなった場合、
第2因子バックアップコードによるログインも可能です。
コードは一度の使用で無効化されます。
ユーザが2段階認証に必要なパスコードを取得できず、
バックアップコードによるログインも不可能となった場合には、
管理者による操作で、対象アカウントの2段階認証を無効にすることができます。
occ コマンドの twofactorauth を実行します。
sudo -u apache ./occ twofactorauth:disable testuser
再度、対象ユーザの2段階認証の設定を行いたい場合は、
occコマンドにて有効化する必要があります。
sudo -u nginx ./occ twofactorauth:enable testuser