概要
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のみ認める場合に利用
使用イメージ
- ID・パスワードによるログイン認証を行います。
- 認証を行うデバイスを選択する画面が表示されます。
- WebAuthnを利用してログインを行います(画像は外部デバイス使用時)。
参考文献
- 閲覧数 2766
画像
コメントを追加