FACEIOを使い始める

パスワードレス顔認証を 5分以内で実装できます。FACEIOアプリケーションを作成し、セキュリティとプライバシーの設定を確認して、 fio.jsを組み込みます。その後、 enroll() を新規ユーザーに、 authenticate() を既存ユーザーに使用します。

FACEIO Consoleでアプリケーションを作成してPublic IDをコピーし、WebサイトやWebアプリでfio.jsを初期化します。

5分以内でFACEIOを導入

WebサイトとWebアプリケーション向けの実践的な設定ガイド

このガイドでは、FACEIOの統合手順を説明します。 FACEIO Console ↗でアプリケーションを作成し、顔認識エンジンを選択して、セキュリティとプライバシーの設定を確認した後、 fio.js ライブラリを読み込みます。続いて新規ユーザーを登録し、既存ユーザーを認証して、Consoleからアプリケーションを管理します。

クイックヒント

動作する登録と認証の例は、 HTML統合テンプレート で確認できます。

登録と認証の流れを示すFACEIO Widget

統合例: 実際のアプリケーションでFACEIOがどのように動作するか、 コミュニティチュートリアル のフレームワーク別実装例をご覧ください。

FACEIOの統合手順

アプリケーションの作成から本番設定まで、順番に進めます。

1

FACEIOの仕組み

FACEIOがWebサイトやWebアプリケーションに顔登録と認証を追加する仕組みを確認します。

2

統合チェックリスト

WebサイトまたはWebアプリケーションに fio.js を統合するための重要な手順を確認します。

3

アプリケーションを作成

最初のFACEIOアプリケーションを設定し、顔認識エンジンを選択して、セキュリティ設定とウィジェットの外観を調整します。

4

fio.jsライブラリを追加

fio.js ライブラリをWebサイトに組み込み、アプリケーションのPublic IDで初期化します。

5

enroll()とauthenticate()

fio.jsで新規ユーザーを登録し、既存ユーザーを認証する方法を確認します。

6

最初のユーザーを登録

動作するコード例で登録と認証を実装し、結果をバックエンドのアカウントとセッションの処理に接続します。

7

統合テンプレート

登録と認証の両方を含むHTMLテンプレートを使用します。

8

アプリケーションを管理

アクティビティの確認、セキュリティ設定、webhookの追加、APIキーの取得、顔インデックスの管理を行います。

FACEIOの概要

FACEIOをWebログインフローに追加する仕組み

要点

FACEIOは、WebサイトとWebアプリケーション向けのクロスブラウザー顔認証フレームワークです。 fio.js ライブラリは既存のフロントエンドから登録・認証ウィジェットを開き、アカウント処理に使用するFacial IDとアプリケーションのpayloadを返します。

FACEIOとは?

  • FACEIOは、 マネージドサービスまたはオンプレミス環境で利用できるクロスブラウザー顔認証フレームワークです。クライアント側JavaScriptライブラリの fio.jsは、WebサイトとWebアプリケーションに登録と認証のフローを追加します。

  • fio.js をフロントエンドに追加し、アプリケーションの Public ID で初期化します。新規ユーザーは enroll() で登録し、既存ユーザーは対応ブラウザーとカメラから authenticate() を実行してログインします。

  • バックエンドでは、返された Facial ID を対象アカウントに関連付け、独自の認可とセッションのルールを適用してください。また、顔認証を完了できないユーザー向けの復旧手段も用意してください。

  • FACEIOは、対応する最新ブラウザー上で一般的なWebカメラやスマートフォンのフロントカメラを使用でき、クライアント側に専用の生体認証センサーは不要です。JavaScriptライブラリfio.jsはフレームワークに依存せず、一般的なフロントエンドおよびバックエンド構成に接続できます。

FACEIOの主な機能

新しいキャプチャーを登録済みの顔インデックスと比較し、FACEIOの基本フローではパスワードやOTPを要求せずに認証結果を返します。

アプリケーションの設定時に、対応する 顔認識エンジン とデプロイ先のリージョンを選択します。

fio.jsライブラリはフレームワークに依存せず、JavaScript、React、Vue、Angular、Next.jsなどのフロントエンド構成に統合できます。

対応する最新ブラウザーと一般的なWebカメラまたはフロントカメラで動作します。 アプリケーションを作成 ↗

カメラへのアクセスとブラウザー機能を前提として、主要ブラウザーの現行バージョンに対応しています。

顔認証フローにはlivenessチェックと、デフォルトで有効なPIN Code検証が含まれます。

専用の生体認証センサーを必要とせず、 設定可能なセキュリティ制御 と 文書化されたプライバシー対策 を提供します。

クラウドの顔認識エンジンと オンプレミス版PixLab Insightに対応します。選択した顔認識エンジンが、アプリケーション所有者の設定に従って生体認証ハッシュを管理します。

プライバシーとデータ保護

  • アプリケーション所有者は、必要な通知と同意フローを用意し、代替のアクセス方法を維持し、ユーザーからの削除依頼に対応する必要があります。本番公開前にプライバシーのベストプラクティスを確認してください。

  • FACEIO 自体は生体認証ハッシュを保存、処理、参照しません。アプリケーション所有者が選択した顔認識エンジンが、デプロイと保存の設定に従って管理します。サービスのプライバシーとセキュリティについては、トラストセンターを確認してください。

クイックヒント

動作する登録と認証の例は、 HTML統合テンプレート 詳しくは よくある質問 もご覧ください。

統合チェックリスト

スムーズに fio.js 統合するための重要な手順

まず、 FACEIO Console ↗ でFACEIOアプリケーションを作成し、WebサイトまたはWebアプリケーションに関連付けます。次に、 fio.jsを読み込んで初期化し、テストユーザーを登録して、既存ユーザーの認証フローを確認します。

始める前に

コード例を含む公式統合ガイドは、 デベロッパーセンターで確認できます。

次の手順でユーザー向け顔認証を有効にします。

1

FACEIO Consoleにアクセス

メールアドレスを使用して FACEIO Console ↗ にログインします。ログイン後、 Application Wizard を使用して最初のFACEIOアプリケーションを作成し、WebサイトまたはWebアプリケーションに関連付けます。

2

アプリケーションを設定

Application Wizard が設定手順を案内します。アプリケーション名を入力し、 顔認識エンジンを選択します。続いて、クラウドの保存リージョン、セキュリティ設定、ウィジェットの外観を確認します。

3

fio.jsライブラリを統合

FACEIOアプリケーションを作成したら、顔認証JavaScriptライブラリのfio.jsをWebサイトに実装し、アプリケーションのPublic IDで初期化します。

4

登録と認証をテスト

fio.jsを読み込んで初期化した後、 enroll() と authenticate() を新規ユーザーと既存ユーザーに対して呼び出します。詳細は以降のセクションで説明します。

アプリケーションを作成

ConsoleでFACEIOアプリケーションを設定

  • ユーザー向けに顔認証を提供するには、まずfio.jsを実装するWebサイトまたはWebアプリケーションを、FACEIO Console ↗でFACEIOアプリケーションに関連付けます。

  • 登録された各ユーザーには Facial IDが割り当てられ、アプリケーションは payload パラメーターを通じて独自のメタデータを関連付けられます。選択した 顔認識エンジンが、分離されたアプリケーションインデックス内の生体認証ハッシュを管理します。FACEIO自体は生体認証ハッシュを保存、処理、参照しません。エンジン、デプロイ先のリージョン、プライバシー設定は、FACEIO ConsoleのApplication Manager ↗で確認してください。

  • 新しいアプリケーションは FACEIO Console ↗ で Application Wizardを使って数分で作成できます。ウィザードがアプリケーション名、 顔認識エンジン の選択、セキュリティ設定、ウィジェットのカスタマイズを案内します。

アプリケーションを作成して設定する手順:

1

FACEIO Console ↗にアクセスします。

2

Consoleのメイン画面で新しいアプリケーションを選択し、Application Wizardを開きます。

3

Application Wizardの案内に従い、アプリケーション名とプライバシーポリシーのURLを入力します。次に、顔認識エンジン、クラウドの保存リージョンまたはオンプレミス環境、セキュリティ設定、ウィジェットの外観を指定します。

設定手順を示すFACEIO Application Wizard

Application Wizardを開く

4

設定内容を確認して送信します。アプリケーションの作成後、 Application Manager ↗が開き、手順付きの統合ガイドとともに新しいアプリケーションを管理できます。

アプリケーションを作成しました

ConsoleからアプリケーションのPublic IDをコピーします。この値でfio.jsを初期化してから、enroll()またはauthenticate()を呼び出します。

fio.jsライブラリを追加

顔認証ライブラリをWebサイトに統合

完全なドキュメント

完全な統合ガイドと公式ドキュメントは、 統合ガイドで確認できます。

最初のアプリケーションを FACEIO Console ↗で最初のアプリケーションを作成したら、FACEIOの顔認証JavaScriptライブラリであるfio.jsをWebサイトまたはWebアプリケーションに統合します。ユーザー向けに顔認証を有効にするために必要な手順です。基本設定は、次に示す3行のコードで行えます。

1 fio.js をサイトに読み込む

fio.jsを使用するHTMLページで、終了</body>タグの直前に次のスニペットを貼り付けます。

fio.jsはFACEIOのCDN ↗から読み込まれます。

HTML
<div id="faceio-modal"></div>
<script src="https://cdn.faceio.net/fio.js"></script>

上記のスニペットは fio.js を非同期で読み込みます。基本的なHTMLページでは、次のようにライブラリを初期化できます。

fio.js を読み込んだ基本HTMLページ

HTML
<html>
  <head>
    <title>顔認識でログイン</title>
  </head>
  <body>
    <div id="faceio-modal"></div>
    <script src="https://cdn.faceio.net/fio.js"></script>
  </body>
</html>
  • コピー、調整、サーバー上でのテストに使用できる完全なテンプレートは、 HTML統合テンプレート をご覧ください。

  • fio.js は必ず cdn.faceio.net ↗から直接読み込んでください。自己ホストすると、修正や新機能を受け取れません。

2 faceIO オブジェクトを作成

fio.jsを初期化するには、新しいfaceIO()オブジェクトを作成し、アプリケーションのPublic IDを渡します。次の例のように記述します。このスニペットはステップ1の読み込みコードの直後にも追加できます。完全な例はHTML Boilerplateをご覧ください。

新しいfaceIO()オブジェクトを作成するJavaScriptスニペット

HTML
<script type="text/javascript">
   /* アプリケーションのPublic IDでfio.jsを初期化 */
    const faceio = new faceIO("app-public-id");
</script>

続行する前に、アプリケーションの Public ID が FACEIO Console ↗のApplication Managerに表示されていることを確認し、次の作業を完了してください。

3 ウィジェットを起動

fio.js の読み込みと初期化が完了したら、 enroll() で新規ユーザーを登録し、 authenticate() で既存ユーザーを認証します。

  • enroll() は新規ユーザーの登録 に使用し、

  • authenticate() は既存ユーザーの認証 に使用します。

各メソッドを説明する前に、 fio.js を初めて実装する一般的なHTMLページを示します。

fio.js を読み込み、 enroll() または authenticate()

HTML
<html>
  <head>
    <title>顔認識でログインまたは登録</title>
  </head>
  <body>
    <button onclick="enrollNewUser()">新規ユーザーを登録</button>
    <button onclick="authenticateUser()">ユーザーを認証</button>
    <div id="faceio-modal"></div>
    <script src="https://cdn.faceio.net/fio.js"></script>
    <script type="text/javascript">
        // アプリケーションのPublic IDでfio.jsを初期化
        const faceio = new faceIO("app-public-id");
        function enrollNewUser(){
           // faceio.enroll()を呼び出して登録を開始
        }
        function authenticateUser(){
           // faceio.authenticate()を呼び出して顔認証を開始
        }
        function handleError(errCode){
            // ここでエラーを処理
        }
    </script>
  </body>
</html>

参照テンプレート

HTML Boilerplate セクションには、 enroll() と authenticate() の両方を含む完全な実装例があります。

最初のユーザーを登録する前に、 fio.js が提供する基本要素を確認します。

登録と認証のメソッド

新規ユーザーにはenroll()、既存ユーザーにはauthenticate()を使用します

fio.jsは、顔認証フローに2つの主要メソッドを提供します。

enroll() メソッド

  • 新規ユーザーを登録するには、先ほど作成したfaceIOオブジェクトのenroll()メソッドを呼び出します。このメソッドを使うと、アプリケーション内で新規ユーザーをトランザクション単位で登録できます。この処理は一般にonboardingと呼ばれ、従来のユーザー登録フローに相当します。

  • enroll()を呼び出すとFACEIO Widgetが開き、必要に応じてユーザーの同意とカメラへのアクセスを求め、登録に必要な顔データを取得します。選択した顔認識エンジンが、今後の認証に使用する生体認証ハッシュを生成してインデックス化します。

  • enroll()は複数のオプションパラメーターを受け取ります。たとえば、localeは操作言語、permissionTimeoutはカメラアクセスの待機時間、payloadはユーザーに関連付ける任意のデータ(メールアドレス、名前、IDなど)を指定します。 このpayloadは、今後の認証に成功したときに返されます。

  • enroll()はPromiseを返し、登録に成功するとuserInfoオブジェクトで解決されます。返り値にはFacial ID、登録日時、details.ageとdetails.genderの推定値が含まれます。Facial IDは、対応するバックエンドアカウントを検索するキーとして使用できます。

  • ユーザーがカメラへのアクセスまたは利用規約を拒否すると、Promiseは対応するエラーコードでrejectされます(fioErrCode.PERMISSION_REFUSED、fioErrCode.TERMS_NOT_ACCEPTEDなど)。完全な一覧はエラーコードセクションをご覧ください。

  • enroll()メソッドのパラメーター、戻り値、エラー処理については、統合ガイドをご覧ください。

authenticate() メソッド

  • 登録済みユーザーを認証して識別するには、faceIOオブジェクトのauthenticate()メソッドを呼び出します。このメソッドは登録済みユーザーに対してトランザクション単位の認証と識別を実行し、従来のログインフローに相当します。

  • authenticate()を呼び出すとFACEIO Widgetが開き、必要に応じてカメラへのアクセスを求め、設定されたlivenessチェックと顔認識を実行して認証結果を返します。

  • アプリケーションの セキュリティ設定によっては、顔認識エンジンがユーザーを識別した後、 登録時に設定したPIN Codeの確認が必要です。確認後に authenticate() メソッドが成功します。

  • authenticate()は、カメラアクセスの待機時間を指定するpermissionTimeout、操作言語を指定するlocaleなどのオプションを受け取ります。すべての項目はauthenticate()のドキュメントで確認できます。

  • authenticate()はPromiseを返し、識別に成功するとuserDataオブジェクトで解決されます。主なプロパティは、登録時に関連付けたデータを含むpayloadと、ユーザー固有の識別子であるfacialIdです。これらをバックエンドの検索キーとして使用し、ユーザー固有のデータを取得できます。

  • authenticate()メソッドのパラメーター、戻り値、エラー処理については、統合ガイドをご覧ください。

次へ進む

2つのメソッドを組み合わせ、ユーザー登録と認証の動作例を実装します。

最初のユーザーを登録して認証

登録と認証の動作例

顔認識を開始するには、 faceIO()クラスの2つの主要メソッドであるenroll()またはauthenticate()を呼び出します。enroll()は新規ユーザーの登録に使用し、authenticate()は既存ユーザーを識別します。

新規ユーザーを登録

新規ユーザーの登録では、同意を取得した後に顔特徴を抽出してインデックス化します。enroll()を呼び出すだけで開始できます。

enroll()メソッドの一般的な呼び出し例

HTML
// アプリケーションのPublic IDでfaceIOオブジェクトを作成
const faceio = new faceIO("app-public-id");
function enrollNewUser(){
  faceio.enroll({
    "locale": "auto", // ユーザーのデフォルト言語
    "payload": {
        /* このユーザーに関連付け、今後の認証時に返すpayload。 */
        "whoami": 123456, // このユーザーに関連付けるサンプルID
        "email": "john.doe@example.com"
        }
    }).then(userInfo => {
        // ユーザー登録に成功 
        alert(
            `ユーザー登録に成功。詳細:
           一意のFacial ID:${userInfo.facialId}
           登録日時:${userInfo.timestamp}
           推定性別:${userInfo.details.gender}
           推定年齢:${userInfo.details.age}`
        );
       console.log(userInfo);
       // 結果を処理し、Facial IDを保存してダッシュボードへ移動
    }).catch(errCode => {
       // 登録中に発生したエラーを記録
       handleError(errCode);
    })
}
  • 初期化:アプリケーションのPublic IDでfaceIOオブジェクトを作成します。"app-public-id"をFACEIO Console ↗で取得した実際のPublic IDに置き換えます。

  • 登録の呼び出し:enroll()を呼び出すと登録が始まり、必要に応じてユーザーの同意とカメラへのアクセスを求め、顔特徴を抽出します。payloadパラメーターを使って、ユーザーID(whoami)やメールアドレスなどのデータをユーザーに関連付けられます。 このpayloadは、今後の認証に成功したときに返されます。

  • 登録結果:登録に成功すると、PromiseはuserInfoオブジェクトで解決され、一意のFacial ID、登録日時、details.genderとdetails.ageの推定値が返されます。Facial IDをデータベースに保存して、今後の認証をこのユーザーに関連付けてください。

  • エラー処理:登録の失敗を捕捉し、handleError() 関数を実装して各エラーコードを適切に処理してください。すべてのコードは エラーコードのドキュメント で確認できます。

既存ユーザーを認証

同様に、登録済みユーザーの認証はauthenticate()を呼び出すだけで開始できます。

authenticate()メソッドの一般的な呼び出し例

HTML
const faceio = new faceIO("app-public-id"); // アプリケーションのPublic IDで初期化
function authenticateUser(){
    faceio.authenticate({
        "locale": "auto" // ユーザーのデフォルト言語
    }).then(userData => {
        console.log("ユーザーの識別に成功")
        // このユーザーに返されたFacial IDを取得。同じアプリケーションでは
        // 認証に成功するたびに同じ値が返されます。
        // 対応するバックエンドアカウントの検索キーとして保存します。
        console.log("関連付けられたFacial ID:" + userData.facialId)
        // このユーザーに関連付け済みの任意データがあれば取得
        // enroll()のpayloadパラメーターを通じて登録時に設定したデータです。
        console.log("Payload: " + JSON.stringify(userData.payload)) // 上記のenroll()例で設定したpayloadデータ
    }).catch(errCode => {
        handleError(errCode)
    })
}
  • 初期化:登録例と同様に、アプリケーションのPublic IDでfaceIOオブジェクトを初期化します。

  • 認証の呼び出し:authenticate()を呼び出すと認証が始まり、必要に応じてカメラへのアクセスを求め、顔認識を実行します。locale パラメーターはウィジェットの操作言語を指定します。

  • 認証結果:認証に成功すると、PromiseはuserDataオブジェクトで解決されます。userData.facialIdは、すべての認証で同じ値を保つユーザー固有の識別子です。バックエンドでユーザーを検索する主キーとして使用してください。userData.payloadには、登録時に関連付けたデータが含まれます。例:{"whoami": 123456, "email": "john.doe@example.com"}。

  • エラー処理:認証の失敗を捕捉し、handleError()関数で返されたエラーコードを処理してください。詳しくはエラーコードのドキュメント で確認できます。

次のステップ

HTML統合テンプレート に、 enroll() と authenticate() を組み合わせた完全なスターターテンプレートがあります。

完全な統合テンプレート

統合フローを含むHTMLスターターテンプレート

HTMLテンプレートは、初期化、登録、認証、エラー処理を1つの参照ファイルにまとめています。本番利用前に、アカウントの関連付け、セッション管理、復旧手段、ユーザー向けメッセージを調整してください。同じコードは GitHub Gist ↗でも確認できます。

重要:プレースホルダーを置き換える

app-public-idを実際のアプリケーションPublic IDに置き換えてください。fio.jsの初期化に使用するPublic IDは、FACEIO Console ↗のApplication Managerで確認できます。

統合テンプレート

実装上の注意

  • メソッドの呼び出し:この例では、新規ユーザーの登録にenroll()、既存ユーザーの認証にauthenticate()を使用します。例を調整する前に、統合ガイドで各メソッドのオプション、戻り値、エラーを確認してください。
  • payloadを調整:enroll()メソッドのpayloadパラメーターを変更すると、独自のデータを登録ユーザーに関連付けられます。payloadは今後の認証時に返されます。詳しくはenroll()のドキュメントをご覧ください。
  • HTTPサーバーが必要:fio.jsはブラウザーのセキュリティ要件により、HTTPサーバー経由で読み込む必要があります。ファイルシステムから直接実行することはできません。テンプレートをサーバーのHTMLディレクトリに配置し、ブラウザーからアクセスしてください。詳しくはセキュリティのベストプラクティスをご覧ください。
  • Facial IDを保存:登録に成功したら、返されたfacialIdをデータベースに保存してユーザーアカウントに関連付けます。このIDを今後の認証で検索キーとして使用します。
  • エラー処理:エラーハンドラーは返されたエラーコードを受け取ります。WebサイトまたはWebアプリのUIと復旧フローに合わせて各メッセージを調整してください。

統合例の完了

これで、fio.jsの読み込み、enroll()の呼び出し、authenticate()の呼び出しを含む参照実装が完成しました。次に、アプリケーション管理と本番環境向けの設定を確認します。

アプリケーションを管理

アプリケーションの設定、イベント、ユーザー、APIアクセスを確認

FACEIO Console ↗のApplication Managerを使用し、fio.jsを統合した各アプリケーションの設定と動作を確認します。

リアルタイムアクティビティ

アプリケーションの登録と認証のアクティビティを確認します。

セキュリティ設定

PIN Code要件、ドメインoriginのフィルタリング、国コード制限などのセキュリティ設定を確認します。

ユーザー管理

登録済みの Facial ID を削除し、ユーザーの削除請求に対応します。

webhook統合

webhook を設定し、リアルタイムイベントの通知とバックエンド同期に使用します。

顔インデックスの管理

アプリケーションの顔インデックス管理、保存容量の拡張、 on-premiseへの移行、S3 bucketへの転送を行います。

ウィジェットのカスタマイズ

ウィジェットのテーマ、色、レイアウトをWebサイトのデザインに合わせます。

APIキーの管理

APIキー を取得し、バックエンドAPIの呼び出しとクォータを確認します。

サポートと保守

サポート窓口からチケットの作成、プランの変更、アプリケーションのライフサイクル管理を行います。

FACEIOの統合を続ける

アプリケーションを作成して登録と認証をテストし、返されたFacial IDをバックエンドのアカウント情報に関連付けます。本番公開前にセキュリティとプライバシーのガイドを確認してください。

FACEIOアプリケーションを作成

FACEIO Consoleでアプリケーションを作成してPublic IDをコピーし、この5分ガイドに沿ってfio.jsをWebサイトやWebアプリへ接続します。