WebAuthn
このページでは、WebAuthn 認証モジュールの利用方法について説明します。
はじめに
認証モジュールの構成
FIDO2 では認証デバイスの「登録」と認証デバイスを利用した「認証」の 2 つのシーケンスが存在します。
WebAuthn 認証もこれらのシーケンスに従い、WebAuthn (登録) と WebAuthn (認証) の 2 つのモジュールに分かれています。
OpenAM の認証連鎖に含めることで、「登録」と「認証」のそれぞれで異なる認証と組み合わせることが可能です。
LDAP ディレクトリ構成
従来、OpenAM では認証デバイスの情報をユーザーの属性として格納していました(FR OATH 認証など)。
しかし、WebAuthn 認証では認証デバイスをユーザーとは異なるディレクトリに格納します。
ou=example,ou=com
│
├─ou=Users <- ユーザー格納先
│ ├─uid=user1
│ ├─uid=user2
│ └─uid=user3
│
└─ou=Credentials <- 認証デバイス格納先
├─fido2CredentialID=XXXXXXXXXXX
├─fido2CredentialID=XXXXXXXXXXX
└─fido2CredentialID=XXXXXXXXXXX
そして、ユーザーエントリーと認証デバイスエントリーの紐づけは entryUUID 属性によって行います。
以下の例では user1 が認証デバイスを 2 つ、user3 が認証デバイスを 1 つ所有していることを示しています(user2 は所有していない)。
ou=example,ou=com
│
├─ou=Users
│ ├─uid=user1
│ │ └─entryUUID: 1f23ab57-8391-4d81-8799-6538fe6d06c7
│ ├─uid=user2
│ │ └─entryUUID: 639c7d57-ac06-3493-8faf-54650b3a383c
│ └─uid=user3
│ └─entryUUID: f01f029a-4908-48da-96e1-28171a98f423
│
└─ou=Credentials
├─fido2CredentialID=XXXXXXXXXXX <- user1 所有
│ └─fido2UserID: 1f23ab57-8391-4d81-8799-6538fe6d06c7
├─fido2CredentialID=XXXXXXXXXXX <- user1 所有
│ └─fido2UserID: 1f23ab57-8391-4d81-8799-6538fe6d06c7
└─fido2CredentialID=XXXXXXXXXXX <- user3 所有
└─fido2UserID: f01f029a-4908-48da-96e1-28171a98f423
ユースケース
WebAuthn 認証のユースケースを以下に示します。ユースケースによって認証モジュールの設定内容が異なります。
ユースケース | 説明 |
---|---|
パスワードレス認証 | FIDO2 で ID と認証デバイスにより認証します。 |
二段階認証 | FIDO2 を ID/パスワード認証と組み合わせて二段階認証として利用します。 |
ユーザーネームレス認証 | ユーザーハンドルを格納した FIDO2 認証デバイス(Resident Key)のみで認証します。 |
なお、ここで示すユースケースは「認証」シーケンスが対象です。本文書では「登録」シーケンスのユースケースには言及しません。 WebAuthn (登録) はデータストア認証(ID/パスワード認証)と組み合わせて利用します。
事前準備
WebAuthn 認証を導入する前に、OpenAM サーバーでは以下の事前準備が必要です。
- OpenAM サーバーが HTTPS で動作している
- OpenAM の初期設定が完了している
- WebAuthn 認証で利用する LDAP 属性をユーザーデータストア設定で許可している
- 認証デバイス用ディレクトリサーバーを準備する
ユーザーデータストア設定
言及した通り、ユーザーエントリーと認証デバイスエントリーの紐づけは entryUUID 属性によって行います。よって、entryUUID をユーザーデータストアで許可する必要があります。
なお、検証目的でユーザーデータストアとして内蔵 OpenDJ を利用する場合、本設定は不要です。
- OpenAM に管理者ユーザーでログインします。
- 対象レルム → 「データストア」 → 対象のデータストア を開きます。
- 「LDAP ユーザー属性」に entryUUID で準備した属性を追加して「保存」ボタンをクリックします。
認証デバイス用ディレクトリサーバーを準備する
認証デバイス用ディレクトリサーバーを準備します。通常はユーザー用の LDAP サーバーとの併用を想定しています。
認証デバイス用ディレクトリサーバーでは認証デバイス用の LDAP スキーマを導入する必要があります。デフォルトではこのスキーマの利用を想定しています。
なお、検証目的で認証デバイス用ディレクトリサーバーをとして内蔵 OpenDJ を利用する場合、本設定は不要です。
認証デバイスの格納先の準備
認証デバイスの格納先のエントリーを準備しておきます。
本文書では ou=Credentials,dc=openam,dc=jp
を利用します。
パスワードレス認証として導入する
本章では WebAuthn 認証をパスワードレス認証として導入するための手順を示します。
WebAuthn Authenticator サービスを設定する
WebAuthn 認証モジュールを動作させるためには WebAuthn Authenticator サービスを作成して認証デバイスを格納するディレクトリサーバーや LDAP オブジェクト/属性を指定する必要があります。
- OpenAM に管理者ユーザーでログインします。
- 対象レルム → 「サービス」を開きます。
- 「サービスの追加」ボタンをクリックします。
- 「サービスタイプ」に「WebAuthn Authenticator サービス」を選択して、「作成」ボタンをクリックします。
- 各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。内蔵 OpenDJ を利用する場合も「バインドパスワード」は必ず入力してください。
項目名 | 設定例 |
---|---|
Authenticator オブジェクトクラス | fido2Credential, top |
Credential ID 属性 | fido2CredentialID |
Credential Public Key 属性 | fido2PublicKey |
Credential Name 属性 | fido2CredentialName |
Signature Counter 属性 | fido2SignCount |
User Handle 属性 | fido2UserID |
プライマリLDAPサーバー | ldap.example.co.jp:389 |
ベース DN | ou=Credentials,dc=openam,dc=jp |
バインドユーザー DN | cn=amuser,dc=openam,dc=jp |
バインドユーザーパスワード | 「バインドユーザー DN」のパスワードを入力 |
LDAP Connection Mode | LDAP |
WebAuthn (登録) モジュールを設定する
WebAuthn (登録) モジュールのインスタンスを作成し、登録用の認証連鎖を作成します。
- OpenAM に管理者ユーザーでログインします。
- 対象レルム → 「認証」 → 「モジュール」を開きます。
- 「モジュールの追加」ボタンをクリックします。
- ここでは「名前」に “registerModule” と入力し、「タイプ」は「WebAuthn (登録)」を選択して、「作成」ボタンをクリックします。
-
各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例 Relying Party 名 OpenAM Origin https://openam.example.co.jp:443 Attestation 設定 none Attachment 設定 undefined Resident Key 設定 false ローカル認証設定 preferred タイムアウト(ミリ秒) 60000 Display Name 属性 cn 認証デバイスの最大数 3 認証レベル 0 - 左側のメニューより、「認証」→「認証連鎖」を開きます。
- 「認証連鎖の追加」ボタンをクリックします。
- ここでは「認証連鎖名」に “registerService” と入力し、「作成」ボタンをクリックします。
- 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「DataStore」を選択し、「基準の選択」は「Requisuite」を選択して「OK」ボタンをクリックします。
- 再度「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「registerModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
- 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。
以上で完了です。
WebAuthn (認証) モジュールを設定する
WebAuthn (認証) モジュールのインスタンスを作成し、認証用の認証連鎖を作成します。
- OpenAM に管理者ユーザーでログインします。
- 対象レルム → 「認証」 → 「モジュール」を開きます。
- 「モジュールの追加」ボタンをクリックします。
- ここでは「名前」に “pwdLessModule” と入力し、「タイプ」は「WebAuthn (認証)」を選択して、「作成」ボタンをクリックします。
-
各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例 Relying Party 名 OpenAM Origin https://openam.example.co.jp:443 Resident Key 認証利用 false ローカル認証設定 preferred タイムアウト(ミリ秒) 60000 MFA の 2 段階目以降に利用 false Display Name 属性 cn 認証レベル 0 - 左側のメニューより、「認証」→「認証連鎖」を開きます。
- 「認証連鎖の追加」ボタンをクリックします。
- ここでは「認証連鎖名」に “pwdLessService” と入力し、「作成」ボタンをクリックします。
- 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「pwdLessModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
- 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。
以上で完了です。
動作確認 (パスワードレス認証)
認証デバイスを登録する
登録用の認証連鎖を動作させて認証デバイスを登録します。
- WebAuthn をサポートするブラウザーで次の URL にアクセスします。
- https://openam.example.co.jp/openam/UI/Login?service=registerService
-
ログイン画面が表示されますので、ユーザー名/パスワードを入力して「ログイン」ボタンをクリックします。
-
ブラウザでポップアップが表示されます。ブラウザの指示に従って認証デバイスを操作します。
-
登録処理が成功すると「認証デバイスが登録されました識別名を入力してください (任意)」と表示されますので、認証デバイスの識別名を入力して「次へ」ボタンをクリックします。
- 認証セッションが発行されてユーザープロファイル画面が表示されます。
以上で完了です。
認証デバイスで認証する
認証用の認証連鎖を動作させて認証デバイスで認証します。
- WebAuthn をサポートするブラウザーで次の URL にアクセスします。
- https://openam.example.co.jp/openam/UI/Login?service=pwdLessService
-
ログイン画面が表示されますので、ユーザー名を入力して「ログイン」ボタンをクリックします。
-
ブラウザでポップアップが表示されます。ブラウザの指示に従って認証デバイスを操作します。
- 認証が成功すると認証セッションが発行されてユーザープロファイル画面が表示されます。
以上で完了です。
二段階認証として導入する
本章では WebAuthn 認証を二段階認証として導入するための手順を示します。
WebAuthn Authenticator サービスを設定する
WebAuthn 認証モジュールを動作させるためには WebAuthn Authenticator サービスを作成して認証デバイスを格納するディレクトリサーバーや LDAP オブジェクト/属性を指定する必要があります。
手順及び設定内容は「WebAuthn Authenticator サービスを設定する」と同様です。 既に実施している場合は次の手順に進みます。
WebAuthn (登録) モジュールを設定する
WebAuthn (登録) モジュールのインスタンスを作成し、登録用の認証連鎖を作成します。 手順及び設定内容は「WebAuthn (登録) モジュールを設定する」と同様です。 既に実施している場合は次の手順に進みます。
WebAuthn (認証) モジュールを設定する
WebAuthn (認証) モジュールのインスタンスを作成し、認証用の認証連鎖を作成します。
- OpenAM に管理者ユーザーでログインします。
- 対象レルム → 「認証」 → 「モジュール」を開きます。
- 「モジュールの追加」ボタンをクリックします。
- ここでは「名前」に “mfaModule” と入力し、「タイプ」は「WebAuthn (認証)」を選択して、「作成」ボタンをクリックします。
-
各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例 Relying Party 名 OpenAM Origin https://openam.example.co.jp:443 Resident Key 認証利用 false ローカル認証設定 preferred タイムアウト(ミリ秒) 60000 MFA の 2 段階目以降に利用 true Display Name 属性 cn 認証レベル 0 - 左側のメニューより、「認証」→「認証連鎖」を開きます。
- 「認証連鎖の追加」ボタンをクリックします。
- ここでは「認証連鎖名」に “mfaService” と入力し、「作成」ボタンをクリックします。
- 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「DataStore」を選択し、「基準の選択」は「Requisuite」を選択して「OK」ボタンをクリックします。
- 再度「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「mfaModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
- 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。
以上で完了です。
動作確認 (二段階認証)
認証デバイスを登録する
登録用の認証連鎖を動作させて認証デバイスを登録します。 手順は「認証デバイスを登録する」と同様です。 既に実施している場合は次の手順に進みます。
認証デバイスで認証する
認証用の認証連鎖を動作させて認証デバイスで認証します。
- WebAuthn をサポートするブラウザーで次の URL にアクセスします。
- https://openam.example.co.jp/openam/UI/Login?service=mfaService
-
ログイン画面が表示されますので、ユーザー名/パスワードを入力して「ログイン」ボタンをクリックします。
-
ブラウザでポップアップが表示されます。ブラウザの指示に従って認証デバイスを操作します。
- 認証が成功すると認証セッションが発行されてユーザープロファイル画面が表示されます。
以上で完了です。
ユーザーネームレス認証として導入する
本章では WebAuthn 認証をユーザーネームレス認証として導入するための手順を示します。
WebAuthn Authenticator サービスを設定する
WebAuthn 認証モジュールを動作させるためには WebAuthn Authenticator サービスを作成して認証デバイスを格納するディレクトリサーバーや LDAP オブジェクト/属性を指定する必要があります。
手順及び設定内容はは「WebAuthn Authenticator サービスを設定する」と同様です。 既に実施している場合は次の手順に進みます。
WebAuthn (登録) モジュールを設定する
WebAuthn (登録) モジュールのインスタンスを作成し、登録用の認証連鎖を作成します。
- OpenAM に管理者ユーザーでログインします。
- 対象レルム → 「認証」 → 「モジュール」を開きます。
- 「モジュールの追加」ボタンをクリックします。
- ここでは「名前」に “residentRegisterModule” と入力し、「タイプ」は「WebAuthn (登録)」を選択して、「作成」ボタンをクリックします。
-
各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例 Relying Party 名 OpenAM Origin https://openam.example.co.jp:443 Attestation 設定 none Attachment 設定 undefined Resident Key 設定 true ローカル認証設定 preferred タイムアウト(ミリ秒) 60000 Display Name 属性 cn 認証デバイスの最大数 3 認証レベル 0 - 左側のメニューより、「認証」→「認証連鎖」を開きます。
- 「認証連鎖の追加」ボタンをクリックします。
- ここでは「認証連鎖名」に “residentRegisterService” と入力し、「作成」ボタンをクリックします。
- 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「DataStore」を選択し、「基準の選択」は「Requisuite」を選択して「OK」ボタンをクリックします。
- 再度「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「residentRegisterModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
- 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。
以上で完了です。
WebAuthn (認証) モジュールを設定する
WebAuthn (認証) モジュールのインスタンスを作成し、認証用の認証連鎖を作成します。
- OpenAM に管理者ユーザーでログインします。
- 対象レルム → 「認証」 → 「モジュール」を開きます。
- 「モジュールの追加」ボタンをクリックします。
- ここでは「名前」に “residentModule” と入力し、「タイプ」は「WebAuthn (認証)」を選択して、「作成」ボタンをクリックします。
-
各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例 Relying Party 名 OpenAM Origin https://openam.example.co.jp:443 Resident Key 認証利用 true ローカル認証設定 preferred タイムアウト(ミリ秒) 60000 MFA の 2 段階目以降に利用 false Display Name 属性 cn 認証レベル 0 - 左側のメニューより、「認証」→「認証連鎖」を開きます。
- 「認証連鎖の追加」ボタンをクリックします。
- ここでは「認証連鎖名」に “residentService” と入力し、「作成」ボタンをクリックします。
- 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
- 「モジュールの選択」のプルダウンで「residentModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
- 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。
以上で完了です。
動作確認 (ユーザーネームレス認証)
認証デバイスを登録する
登録用の認証連鎖を動作させて認証デバイスを登録します。 アクセスする URL 以外は「認証デバイスを登録する」と同様です。
- https://openam.example.co.jp/openam/UI/Login?service=residentRegisterService
認証デバイスで認証する
認証用の認証連鎖を動作させて認証デバイスで認証します。
- WebAuthn をサポートするブラウザーで次の URL にアクセスします。
- https://openam.example.co.jp/openam/UI/Login?service=residentService
-
ブラウザでポップアップが表示されます。認証するユーザーまたは利用する認証デバイスを選択します。
-
ブラウザの指示に従って認証デバイスを操作します。
- 認証が成功すると認証セッションが発行されてユーザープロファイル画面が表示されます。
以上で完了です。
認証デバイスを管理する
本章では認証デバイスの管理方法について記載します。
認証デバイスを表示する
認証デバイスはユーザーのダッシュボード画面で表示が可能です。
-
OpenAM で認証してユーザープロファイル画面を表示します。
-
画面左上のダッシュボードをクリックします。
-
ダッシュボード画面をスクロールすると「FIDO2(WebAuthn)認証デバイス」というセクションがあり、登録した認証デバイスを確認できます。
認証デバイス情報を確認する
認証デバイスは名前の他に登録日時を確認することができます。 認証デバイスを削除する際に参考にしてください。
-
「認証デバイスを表示する」 で認証デバイスを表示します。
-
デバイスのアイコンをクリックすると、デバイス名と登録日時が表示されます。
認証デバイスを削除する
認証デバイスはユーザーのダッシュボード画面で削除が可能です。
-
「認証デバイスを表示する」 で認証デバイスを表示します。
-
デバイスのアイコンの右上をクリックして、削除メニューをクリックします。