Keycloakを使用したWebAuthn認証の設定方法と使用イメージ

  •  
 
yoshino に投稿

概要

Keycloakを使用してWebAuthn認証を設定する方法をまとめます。

実行環境

  • PostgreSQL: postgresql13
  • Keycloak: keycloak-12.0.2
  • JDBC Driver: postgresql-42.2.18

前提

keycloakにlocalhostまたはhttpsでアクセスできることが必須です。

WebAuthnの有効化

初期設定でWebAuthnは有効化されていないため、下記手順で有効化する必要があります。

  • レルムを選択し、AuthenticationのRequired Actionsタブを選択します。
  • Register をクリックします。
  • WebAuthn Registerを選択し、OKをクリックします。
  • Required ActionにWebAuthn Registerが追加されていることを確認にして、Enabledにチェックを入れます。
  • WebAuthnの登録を強制する場合は、Default Action にチェックを入れます。

WebAuthn認証の設定手順

1.新規でフローを作成

  • WebAuthnを有効化しているレルムを選択し、AuthenticationのFlowsタブを選択します。
  • Newをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Alias WebAuthn Browser
Description 空欄
type generic

2.Cookieを追加

  • 新規でフローを作成すると、FlowsタブのドロップダウンリストにWebAuthn Browserが追加されているので選択します。
  • Add executionをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Provider Cookie
  • Auth TypeにCookieが追加されていることを確認し、Requirementを以下の値に設定します。
項目名 設定値
Requirement Alternetive

3.WebAuthnFormを追加

  • Add Flowをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Alias WebAuthn Browser Form
Description 空欄
type generic
  • Auth TypeにWebAuthn Browser Formが追加されていることを確認し、Requirementを以下の値に設定します。
項目名 設定値
Requirement Alternetive

4.UsernamePassword認証を追加

  • 追加されたWebAuthn Browser FormのActionsから、Add executionをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Provider Username Password Form
  • Auth TypeにUsername Password Formが追加されていることを確認し、Requirementを以下の値に設定します。
項目名 設定値
Requirement Required

5.WebAuthn認証を追加

  • WebAuthn Browser FormのActionsから、Add executionをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Provider WebAuthn Authenticator
  • Auth TypeにWebAuthn Authenticatorが追加されていることを確認し、Requirementを以下の値に設定します。
項目名 設定値
Requirement Alternetive

Flowsの画面が以下のように設定されていればOKです。

WebAuthn設定をを行っているアカウントのみ、WebAuthn認証を利用する場合の設定

先述の5.WebAuthn認証を追加を行わず、以下の手順で設定します。

5.条件付きフロー追加

  • WebAuthn Browser FormのActionsから、Add Flowをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Alias Conditional 2FA
Description 空欄
type generic
  • Auth TypeにConditional 2FAが追加されていることを確認し、Requirementを以下の値に設定します。
項目名 設定値
Requirement Confitional

6.Condition認証を追加

  • Conditional 2FAのActionsから、Add executionをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Provider Condition - User Configured
  • Auth TypeにCondition - User Configuredが追加されていることを確認し、Requirementを以下の値に設定します。
項目名 設定値
Requirement Required

7.WebAuthn認証を追加

  • Conditional 2FAのActionsから、Add executionをクリックします。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Provider WebAuthn Authenticator
  • Auth TypeにWebAuthn Authenticatorが追加されていることを確認し、Requirementを以下の値に設定します。
項目名 設定値
Requirement Alternetive

Flowsの画面が以下のように設定されていればOKです。

ブラウザーフローの変更

  • AuthenticationのBindingsタブを選択します。
  • Browser Flowを今回作成したWebAuthn Browserに設定し、Saveをクリックします。

WebAuthn Policyの設定

  • AuthenticationのWebAuthn Policyタブを選択します。
  • 設定画面が表示されるので、以下の値で設定しSaveをクリックします。
項目名 設定値
Relying Party Entity Name サーバー名
Signature Algorithms ES256
Relying Party ID ホスト名
Attestation Conveyance Preference none
Authenticator Attachment 空欄
Require Resident Key 空欄
User Verification Requirement discourged
Timeout 0
Avoid Same Authenticator Registration OFF
Acceptable AAGUIDs 空欄

WebAuthn Policyの各項目について

  • Relying Party Entity Name(必須)

    • WebAuthn Relying Partyのサーバー名で、デフォルトの設定は"keycloak"
  • Signature Algorithms

    • 使用する署名アルゴリズムをする。
    • デフォルト設定はES256で、指定されていない場合はES256を適応
  • Relying Party ID

    • ホストドメイン名の形式であることが必須。
  • Attestation Conveyance Preference

    • Authenticatorの情報の検証をする場合、directに設定。
    • 選択されていない場合、"none"を選択した場合と同じ
  • Authenticator Attachment

    • 許可するAuthenticatorのデバイスを選択
    • 内部デバイスを許可する場合はplatform
    • 外部デバイスを許可する場合はcross-platform
  • Require Resident Key

    • 認証器にユーザ情報を保存するかどうかを選択
    • 選択されていない場合、"No"を選択した場合と同じ
  • User Verification Requirement

    • 認証器独自の認証を求めるかどうかの設定。
    • required 必ず認証を求める
    • preferred 認証器が対応してたら認証を求める
    • discouraged 認証を求めない
  • Timeout

    • ユーザーを認証するためのタイムアウト値を秒単位で指定
    • デフォルト値は0
  • Avoid Same Authenticator Registration

    • 既に登録されているWebAuthnオーセンティケーターを新しく登録できるかどうかを選択で、デフォルト設定は"OFF"
    • "ON"に設定すると新しく登録できない
  • Acceptable AAGUIDs

    • AAGUID(Authenticator Attestation Global Unique Identifier)とはAuthenticatorのプロダクトごとの識別子のことで、特定のプロダクトのAutenticatorのみ認める場合に利用

使用イメージ

  1. ID・パスワードによるログイン認証を行います。

  1. 認証を行うデバイスを選択する画面が表示されます。

  1. WebAuthnを利用してログインを行います(画像は外部デバイス使用時)。

参考文献

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。
画像
WebAuthn Use
Flow
Flow All
Browser
Policy
Login
Webauthn
Webauthn Login