FIDO認証の開発を簡単にするPKaaS
主に生体認証を利用するFIDO認証は、セキュリティやユーザビリティを向上させる認証技術の1つとして注目されています。公開鍵ベースの認証方法をサービスとして提供するPublic Key based authentication as a Service (PKaaS)は開発者の方にFIDO認証をより簡単に実装してもらうための構想です。
このページは、開発者がPKaaSを利用する際に必要な情報を提供します。
【注】PKaaSの機能は現在一部機能のみ提供しています。実装して試してみたい方はこちらを御覧ください。
FIDO認証とPKaaS
FIDO認証は、オンラインでセキュリティや利便性の向上を目的とした認証技術です。
この図はFIDO認証の処理を示しています。FIDO認証を提供する場合にはFIDOサーバーを構築する必要があり、それはチャレンジの発行や公開鍵の保存、電子署名の検証など様々な処理を行う必要があります。
これまで、FIDO認証を提供しようとすると、認証サービス提供者(IdP)がそれぞれ独自にFIDOサーバーを構築・運用する必要があり、技術的・運用的な負担がかかることが課題でした。PKaaSはFIDO認証に必要な機能をクラウドサービスとして提供することで、IdPが容易にFIDO認証を提供するお手伝いをします。
この図は、PKaaSを利用した際のFIDO認証用公開鍵の保存場所を示しています。従来のようにIdPが独自にFIDOサーバーを構築した場合、署名検証や公開鍵の保存をそれぞれで行う必要があります。PKaaSを利用すると、これらの作業をPKaaSに任せることができますので、IdPは従来に比べて簡単にFIDO認証を利用者へ提供することが可能になります。
PKaaSの利用形態
PKaaSにはAPI版とリダイレクト版があります。認証画面の持ち方や、開発者側で準備する実装範囲に応じて利用形態を選択してください。
API版
API版は、WebAPIを通してFIDO認証を実施する形態です。
PKaaSの認証画面は表示されず、IdP側で用意した認証画面からFIDO登録・認証を実施できます。認証画面やWebAuthn実装を自前で柔軟に制御したい場合に適した利用方法です。
API版を利用する場合には、下記の開発が必要です。
- IdPの認証画面へJavaScriptを配置
- JavaScriptが呼び出すWebAuthnのエンドポイントおよびPKaaS APIの呼び出し
API版では、FIDO登録とFIDO認証のそれぞれで、チャレンジの発行と電子署名の検証を順番に実行します。公開鍵の保存や署名検証など、FIDO認証に必要な機能をPKaaSへ委譲できるため、IdPは従来に比べて容易にFIDO認証を利用者へ提供できます。
この図は、API版を利用した際の認証システム全体の構成例です。開発者は自分の認証ページを用意するドメイン上にFIDO認証用のエンドポイントを設置し、ブラウザからのリクエストを受けてPKaaS APIへ連携します。
- ①チャレンジの発行: チャレンジと呼ばれる乱数を発行します。
- ②署名検証: 登録・認証時には①で発行したチャレンジを含んだ文書を、利用者のPCやスマホが適切な公開鍵を使って電子署名します。PKaaSはそれぞれの形式に沿って署名を検証し、その結果を返します。
API版とは別に開発環境でのみ利用いただけるローカル開発API版があります。
リダイレクト版
リダイレクト版は、利用者側サービス(IdP)からPKaaSの認証画面へユーザーを遷移させ、FIDO登録または認証を実施する利用方法です。
最終的なログイン成立や後続処理はIdP側が担い、PKaaSはFIDO登録または認証の実行と、その結果の返却を担当します。
API版とは異なり、開発者側でWebAuthnのJavaScript実装やFIDO用APIエンドポイントを用意しなくても導入しやすい構成です。
認証結果はURLのquery parameterではなく、POST body(form_post)で返却します。これにより、認証結果がURLやブラウザ履歴、アクセスログ等に露出することを避けます。
リダイレクト版は、現時点では弊社と関連のある開発者の方へ限定的な提供を行います。
各利用形態の比較
2つの利用形態の違いを以下に示します。
| 観点 | API版 | リダイレクト版 |
|---|---|---|
| 認証画面 | IdP | PKaaS |
| JavaScriptの準備 | 必要 | 不要 |
| APIエンドポイントの実装 | 必要 | 不要 |
| 特徴 | IdPによる柔軟な制御が可能 | 導入が比較的容易 |