Auth0でWebAuthnを有効にした後MFAのセキュリティキーを使ってログインしてみる ~ Public Beta ~

2020.12.02

Auth0のMFA設定でWebAuthnを選択できる機能がベータ版で追加されていたので試してみます。

※ WebAuthnの仕様: https://www.w3.org/TR/webauthn/

ベータ版で提供されているのは、

セキュリティキー(Yubikeyなど)を接続して認証するローミングオーセンティケーターです。こちらは複数のデバイスで使用可能です。

MacBookのTouchBar、Windows Hello、iOS Touch/FaceId、Androidの指紋/顔認識の実装などのデバイスに接続されているプラットフォームオーセンティケーターは未サポートですが、将来的に対応するとのことです。

この機能は、クラシックユニバーサルログイン・カスタムMFAページを使用している場合はサポートされないので注意が必要です。

やってみる

Auth0での設定

ダッシュボードにログインし、Multi-factor Authenticationの設定ページでWebAuthnを有効にします。

有効にした後、必要であれば基本設定を行います。

User Verificationですが、

  • Discouraged: ユーザーがPINの入力を求められることはありません。これはデフォルト値であり、MFAのセキュリティキーを使用する場合は通常は十分です
  • Preferred: ユーザーがすでにキーにPINを設定している場合は、PINの入力を求められます
  • Required: PINがまだ設定されていない場合、ユーザーはPINを設定するよう求められ、毎回PINを入力するよう求められます。これは、最高のセキュリティを提供するオプションです

となっています。今回はRequiredで動作確認をしてみます。

注意点としていかがドキュメントに記載されています。

FIDO-2準拠のセキュリティキーのみがユーザー検証をサポートしていることに注意してください。FIDO-1キーはWebAuthnに使用できますが、ユーザー検証を「Required」に設定した場合は使用できません

ログインフロー確認(新規追加の場合)

ローカルPCにAuth0のサンプルアプリケーションを構築して確認します。

なお、OSはmacOS, ブラウザはchromeを使用しました。

ConnectionにはUsername-Password-Authentication Databaseを用いて、メアドとパスワードでログインします。

セキュリティキーにはYubikeyを用いました。

1. ログイン

メアドとパスワードでログイン

2.セキュリティーキーを追加の確認

続けるをクリックします。

3. セキュリティキーの挿入

セキュリティキーを挿入し、タップします。

4. PINの入力

認識されるとPINを入力するように言われるので入力します。

5. セキュリティキーの使用を完了させる

PINの入力が終わった後、再度タップします。

6. セキュリティキーの登録

名前をつけて登録します。

正常に追加されると、

このような画面が表示されます。

これで登録が完了し、アプリケーションにリダイレクトされます。

ログインフロー確認(セキュリティキーを追加した後)

登録したセキュリティキーで再度ログインできるかの確認をします。

メアドとパスワードを入力後、

1. 本人確認

セキュリティキーが追加されていると、本人確認として上記の画面が表示されます。

2. PIN入力

Auth0の設定で毎回PIN入力を求めるようにしていたので、PINを入力します。

3. 認証リクエスト送信

タップしてリクエストを送信します。

これで認証が完了し、アプリケーションにリダイレクトされます。

Auth0ダッシュボードでユーザーの確認

ログインユーザーのMFAの情報がダッシュボードから確認できます。

このように、セキュリティキーを登録した時につけた名前が表示されていますね。

最後に

WebAuthnを設定し、セキュリティキーでMFAを行いました。

要件の厳しいアプリケーションではとても嬉しいアップデートとなるのではないでしょうか。 今回はローミングオーセンティケーターでしたが、指紋認証ができるプラットフォームオーセンティケーターのサポートが提供されたらもっと利用が増えるかもしれないですね。

ブラウザによってはサポートされていないことがあるので、別のMFA(OTPやMessage)と組み合わせて利用することをお勧めします。

※ 制限やデバイスサポートに関してはドキュメントをご参照ください。