Skip to content

WebAuthn (ja)

tsujiguchi edited this page Dec 10, 2019 · 4 revisions

このページでは、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 を利用する場合、本設定は不要です。

  1. OpenAM に管理者ユーザーでログインします。
  2. 対象レルム → 「データストア」 → 対象のデータストア を開きます。
  3. 「LDAP ユーザー属性」に entryUUID で準備した属性を追加して「保存」ボタンをクリックします。

認証デバイス用ディレクトリサーバーを準備する

認証デバイス用ディレクトリサーバーを準備します。通常はユーザー用の LDAP サーバーとの併用を想定しています。

認証デバイス用ディレクトリサーバーでは認証デバイス用の LDAP スキーマを導入する必要があります。デフォルトではこのスキーマの利用を想定しています。

なお、検証目的で認証デバイス用ディレクトリサーバーをとして内蔵 OpenDJ を利用する場合、本設定は不要です。

認証デバイスの格納先の準備

認証デバイスの格納先のエントリーを準備しておきます。

本文書では ou=Credentials,dc=openam,dc=jp を利用します。

パスワードレス認証として導入する

本章では WebAuthn 認証をパスワードレス認証として導入するための手順を示します。

WebAuthn Authenticator サービスを設定する

WebAuthn 認証モジュールを動作させるためには WebAuthn Authenticator サービスを作成して認証デバイスを格納するディレクトリサーバーや LDAP オブジェクト/属性を指定する必要があります。

  1. OpenAM に管理者ユーザーでログインします。
  2. 対象レルム → 「サービス」を開きます。
  3. 「サービスの追加」ボタンをクリックします。
  4. 「サービスタイプ」に「WebAuthn Authenticator サービス」を選択して、「作成」ボタンをクリックします。
  5. 各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。内蔵 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 (登録) モジュールのインスタンスを作成し、登録用の認証連鎖を作成します。

  1. OpenAM に管理者ユーザーでログインします。
  2. 対象レルム → 「認証」 → 「モジュール」を開きます。
  3. 「モジュールの追加」ボタンをクリックします。
  4. ここでは「名前」に "registerModule" と入力し、「タイプ」は「WebAuthn (登録)」を選択して、「作成」ボタンをクリックします。
  5. 各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例
Relying Party 名 OpenAM
Origin https://openam.example.co.jp:443
Attestation 設定 none
Attachment 設定 undefined
Resident Key 設定 false
ローカル認証設定 preferred
タイムアウト(ミリ秒) 60000
Display Name 属性 cn
認証デバイスの最大数 3
認証レベル 0
  1. 左側のメニューより、「認証」→「認証連鎖」を開きます。
  2. 「認証連鎖の追加」ボタンをクリックします。
  3. ここでは「認証連鎖名」に "registerService" と入力し、「作成」ボタンをクリックします。
  4. 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
  5. 「モジュールの選択」のプルダウンで「DataStore」を選択し、「基準の選択」は「Requisuite」を選択して「OK」ボタンをクリックします。
  6. 再度「モジュールの追加」ボタンをクリックします。
  7. 「モジュールの選択」のプルダウンで「registerModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
  8. 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。

以上で完了です。

WebAuthn (認証) モジュールを設定する

WebAuthn (認証) モジュールのインスタンスを作成し、認証用の認証連鎖を作成します。

  1. OpenAM に管理者ユーザーでログインします。
  2. 対象レルム → 「認証」 → 「モジュール」を開きます。
  3. 「モジュールの追加」ボタンをクリックします。
  4. ここでは「名前」に "pwdLessModule" と入力し、「タイプ」は「WebAuthn (認証)」を選択して、「作成」ボタンをクリックします。
  5. 各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例
Relying Party 名 OpenAM
Origin https://openam.example.co.jp:443
Resident Key 認証利用 false
ローカル認証設定 preferred
タイムアウト(ミリ秒) 60000
MFA の 2 段階目以降に利用 false
Display Name 属性 cn
認証レベル 0
  1. 左側のメニューより、「認証」→「認証連鎖」を開きます。
  2. 「認証連鎖の追加」ボタンをクリックします。
  3. ここでは「認証連鎖名」に "pwdLessService" と入力し、「作成」ボタンをクリックします。
  4. 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
  5. 「モジュールの選択」のプルダウンで「pwdLessModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
  6. 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。

以上で完了です。

動作確認 (パスワードレス認証)

認証デバイスを登録する

登録用の認証連鎖を動作させて認証デバイスを登録します。

  1. WebAuthn をサポートするブラウザーで次の URL にアクセスします。
  1. ログイン画面が表示されますので、ユーザー名/パスワードを入力して「ログイン」ボタンをクリックします。

  2. ブラウザでポップアップが表示されます。ブラウザの指示に従って認証デバイスを操作します。

  3. 登録処理が成功すると「認証デバイスが登録されました識別名を入力してください (任意)」と表示されますので、認証デバイスの識別名を入力して「次へ」ボタンをクリックします。

  4. 認証セッションが発行されてユーザープロファイル画面が表示されます。

以上で完了です。

認証デバイスで認証する

認証用の認証連鎖を動作させて認証デバイスで認証します。

  1. WebAuthn をサポートするブラウザーで次の URL にアクセスします。
  1. ログイン画面が表示されますので、ユーザー名を入力して「ログイン」ボタンをクリックします。

  2. ブラウザでポップアップが表示されます。ブラウザの指示に従って認証デバイスを操作します。

  3. 認証が成功すると認証セッションが発行されてユーザープロファイル画面が表示されます。

以上で完了です。

二段階認証として導入する

本章では WebAuthn 認証を二段階認証として導入するための手順を示します。

WebAuthn Authenticator サービスを設定する

WebAuthn 認証モジュールを動作させるためには WebAuthn Authenticator サービスを作成して認証デバイスを格納するディレクトリサーバーや LDAP オブジェクト/属性を指定する必要があります。

手順及び設定内容は「WebAuthn Authenticator サービスを設定する」と同様です。 既に実施している場合は次の手順に進みます。

WebAuthn (登録) モジュールを設定する

WebAuthn (登録) モジュールのインスタンスを作成し、登録用の認証連鎖を作成します。 手順及び設定内容は「WebAuthn (登録) モジュールを設定する」と同様です。 既に実施している場合は次の手順に進みます。

WebAuthn (認証) モジュールを設定する

WebAuthn (認証) モジュールのインスタンスを作成し、認証用の認証連鎖を作成します。

  1. OpenAM に管理者ユーザーでログインします。
  2. 対象レルム → 「認証」 → 「モジュール」を開きます。
  3. 「モジュールの追加」ボタンをクリックします。
  4. ここでは「名前」に "mfaModule" と入力し、「タイプ」は「WebAuthn (認証)」を選択して、「作成」ボタンをクリックします。
  5. 各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例
Relying Party 名 OpenAM
Origin https://openam.example.co.jp:443
Resident Key 認証利用 false
ローカル認証設定 preferred
タイムアウト(ミリ秒) 60000
MFA の 2 段階目以降に利用 true
Display Name 属性 cn
認証レベル 0
  1. 左側のメニューより、「認証」→「認証連鎖」を開きます。
  2. 「認証連鎖の追加」ボタンをクリックします。
  3. ここでは「認証連鎖名」に "mfaService" と入力し、「作成」ボタンをクリックします。
  4. 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
  5. 「モジュールの選択」のプルダウンで「DataStore」を選択し、「基準の選択」は「Requisuite」を選択して「OK」ボタンをクリックします。
  6. 再度「モジュールの追加」ボタンをクリックします。
  7. 「モジュールの選択」のプルダウンで「mfaModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
  8. 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。

以上で完了です。

動作確認 (二段階認証)

認証デバイスを登録する

登録用の認証連鎖を動作させて認証デバイスを登録します。 手順は「認証デバイスを登録する」と同様です。 既に実施している場合は次の手順に進みます。

認証デバイスで認証する

認証用の認証連鎖を動作させて認証デバイスで認証します。

  1. WebAuthn をサポートするブラウザーで次の URL にアクセスします。
  1. ログイン画面が表示されますので、ユーザー名/パスワードを入力して「ログイン」ボタンをクリックします。

  2. ブラウザでポップアップが表示されます。ブラウザの指示に従って認証デバイスを操作します。

  3. 認証が成功すると認証セッションが発行されてユーザープロファイル画面が表示されます。

以上で完了です。

ユーザーネームレス認証として導入する

本章では WebAuthn 認証をユーザーネームレス認証として導入するための手順を示します。

WebAuthn Authenticator サービスを設定する

WebAuthn 認証モジュールを動作させるためには WebAuthn Authenticator サービスを作成して認証デバイスを格納するディレクトリサーバーや LDAP オブジェクト/属性を指定する必要があります。

手順及び設定内容はは「WebAuthn Authenticator サービスを設定する」と同様です。 既に実施している場合は次の手順に進みます。

WebAuthn (登録) モジュールを設定する

WebAuthn (登録) モジュールのインスタンスを作成し、登録用の認証連鎖を作成します。

  1. OpenAM に管理者ユーザーでログインします。
  2. 対象レルム → 「認証」 → 「モジュール」を開きます。
  3. 「モジュールの追加」ボタンをクリックします。
  4. ここでは「名前」に "residentRegisterModule" と入力し、「タイプ」は「WebAuthn (登録)」を選択して、「作成」ボタンをクリックします。
  5. 各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例
Relying Party 名 OpenAM
Origin https://openam.example.co.jp:443
Attestation 設定 none
Attachment 設定 undefined
Resident Key 設定 true
ローカル認証設定 preferred
タイムアウト(ミリ秒) 60000
Display Name 属性 cn
認証デバイスの最大数 3
認証レベル 0
  1. 左側のメニューより、「認証」→「認証連鎖」を開きます。
  2. 「認証連鎖の追加」ボタンをクリックします。
  3. ここでは「認証連鎖名」に "residentRegisterService" と入力し、「作成」ボタンをクリックします。
  4. 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
  5. 「モジュールの選択」のプルダウンで「DataStore」を選択し、「基準の選択」は「Requisuite」を選択して「OK」ボタンをクリックします。
  6. 再度「モジュールの追加」ボタンをクリックします。
  7. 「モジュールの選択」のプルダウンで「residentRegisterModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
  8. 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。

以上で完了です。

WebAuthn (認証) モジュールを設定する

WebAuthn (認証) モジュールのインスタンスを作成し、認証用の認証連鎖を作成します。

  1. OpenAM に管理者ユーザーでログインします。
  2. 対象レルム → 「認証」 → 「モジュール」を開きます。
  3. 「モジュールの追加」ボタンをクリックします。
  4. ここでは「名前」に "residentModule" と入力し、「タイプ」は「WebAuthn (認証)」を選択して、「作成」ボタンをクリックします。
  5. 各パラメーターを入力し、「変更の保存」をクリックします。以下はパラメータの例です。
項目名 設定例
Relying Party 名 OpenAM
Origin https://openam.example.co.jp:443
Resident Key 認証利用 true
ローカル認証設定 preferred
タイムアウト(ミリ秒) 60000
MFA の 2 段階目以降に利用 false
Display Name 属性 cn
認証レベル 0
  1. 左側のメニューより、「認証」→「認証連鎖」を開きます。
  2. 「認証連鎖の追加」ボタンをクリックします。
  3. ここでは「認証連鎖名」に "residentService" と入力し、「作成」ボタンをクリックします。
  4. 認証連鎖の設定画面が表示されますので、「モジュールの追加」ボタンをクリックします。
  5. 「モジュールの選択」のプルダウンで「residentModule」を選択し、「基準の選択」は「Required」を選択して「OK」ボタンをクリックします。
  6. 認証連鎖の設定画面に戻ったら、「変更の保存」ボタンをクリックします。

以上で完了です。

動作確認 (ユーザーネームレス認証)

認証デバイスを登録する

登録用の認証連鎖を動作させて認証デバイスを登録します。 アクセスする URL 以外は「認証デバイスを登録する」と同様です。

認証デバイスで認証する

認証用の認証連鎖を動作させて認証デバイスで認証します。

  1. WebAuthn をサポートするブラウザーで次の URL にアクセスします。
  1. ブラウザでポップアップが表示されます。認証するユーザーまたは利用する認証デバイスを選択します。

  2. ブラウザの指示に従って認証デバイスを操作します。

  3. 認証が成功すると認証セッションが発行されてユーザープロファイル画面が表示されます。

以上で完了です。

認証デバイスを管理する

本章では認証デバイスの管理方法について記載します。

認証デバイスを表示する

認証デバイスはユーザーのダッシュボード画面で表示が可能です。

  1. OpenAM で認証してユーザープロファイル画面を表示します。

  2. 画面左上のダッシュボードをクリックします。

  3. ダッシュボード画面をスクロールすると「FIDO2(WebAuthn)認証デバイス」というセクションがあり、登録した認証デバイスを確認できます。

認証デバイス情報を確認する

認証デバイスは名前の他に登録日時を確認することができます。 認証デバイスを削除する際に参考にしてください。

  1. 認証デバイスを表示する」 で認証デバイスを表示します。

  2. デバイスのアイコンをクリックすると、デバイス名と登録日時が表示されます。

認証デバイスを削除する

認証デバイスはユーザーのダッシュボード画面で削除が可能です。

  1. 認証デバイスを表示する」 で認証デバイスを表示します。

  2. デバイスのアイコンの右上をクリックして、削除メニューをクリックします。

  • Home
  • Release Notes (ja, en)
  • Authentication (ja, en)
  • SAML 2.0 (ja, en)
  • OpenID Connect / OAuth 2.0 (ja, en)
Clone this wiki locally